Android ActivityManager 介紹 內存相關 進程相關 任務相關 設備相關

介紹

ActivityManager雖然名爲Activity管理器,其實際功能比類名描述的廣泛,定義的方法涵蓋了內存、進程、任務、設備等相關功能。因此,將ActivityManager理解爲AppManager,更符合這個類。

內存相關

1、api

方法 返回值 解釋
getMemoryClass() int 返回當前設備爲每個應用程序分配的內存,單位M
getLargeMemoryClass() int 返回當前設備爲每個應用程序分配的最大內存,單位M
getMemoryInfo(ActivityManager.MemoryInfo outInfo) MemoryInfo 系統內存狀態的信息
getMyMemoryState(ActivityManager.RunningAppProcessInfo outState) 爲調用進程返回全局內存狀態信息
getProcessMemoryInfo(int[] pids) MemoryInfo[] 返回關於一個或多個進程的內存使用情況的信息
isLowRamDevice() boolean 返回是否是一個低ram設備
setWatchHeapLimit(long pssSize) 請求系統監視調用進程的堆限制大小,如果超過pssSize,會自動進行堆轉儲操作
clearWatchHeapLimit() 清除之前由setWatchHeapLimit(long)設置的Watch Heap限制
dumpPackageState(FileDescriptor fd, String packageName) 執行與給定應用程序包名稱相關的各種狀態的系統轉儲。此調用在執行轉儲時會阻塞,因此不應在 UI 線程上執行。數據將作爲文本寫入給定的文件描述符

2、getMemoryInfo 方法

返回系統的內存信息,用於幫助開發者管理內存。不建議輪詢。優先使用onTrimMemory。

public void memoryInfo(View view) {
    ActivityManager.MemoryInfo info = new ActivityManager.MemoryInfo();
    manager.getMemoryInfo(info);
    log("info.totalMem:"+toMb(info.totalMem));
    log("info.availMem:"+toMb(info.availMem));
    log("info.threshold:"+toMb(info.threshold));
    log("info.lowMemory:"+info.lowMemory);
}

MemoryInfo屬性

屬性 說明
totalMem 總內存
availMem 系統可用內存
threshold 低內存閾值,即低內存的臨界線
lowMemory 是否爲低內存狀態

3、getMyMemoryState 方法

返回調用進程的全局內存狀態,只會寫入以下字段

public void memoryState(View view) {
    ActivityManager.RunningAppProcessInfo info = new ActivityManager.RunningAppProcessInfo();
    ActivityManager.getMyMemoryState(info);
    log("info.pid:"+info.pid);
    log("info.uid:"+info.uid);
    log("info.lastTrimLevel:" + info.lastTrimLevel);
    log("info.importance:" + info.importance);
    log("info.lru:" + info.lru);
    log("info.importanceReasonCode:" + info.importanceReasonCode);
}

RunningAppProcessInfo屬性

屬性 說明
pid 進程ID
uid 進程所在的用戶ID
lastTrimLevel 報告給進程的最後內存修剪級別
importance 該進程的相對重要級別,值越小級別越高 importance值的意義
lru 當importance == 400 ,即IMPORTANCE_CACHED 時,這個數字纔有意義
importanceReasonCode importance取值的原因

進程相關

1、api

方法 返回值 解釋
killBackgroundProcesses(String packageName) 讓系統立即終止與給定包關聯的所有後臺進程
getProcessesInErrorState() List ActivityManager.ProcessErrorStateInfo 返回當前處於錯誤狀態的所有進程的列表
getRunningAppProcesses() List ActivityManager.RunningAppProcessInfo 返回在設備上運行的應用程序進程列表
getRunningServiceControlPanel(ComponentName service) PendingIntent 返回一個 PendingIntent,您可以顯示給定服務的控制面板。如果服務沒有控制面板,則返回 null
getRunningServices(int maxNum) List ActivityManager.RunningServiceInfo 返回當前運行的Services列表

任務相關

1、api

方法 返回值 解釋
getAppTasks() List AppTask 獲取與應用程序關聯的任務列表
addAppTask(Activity activity, Intent intent, ActivityManager.TaskDescription description, Bitmap thumbnail) int 添加一個ActivityManager.AppTask
getAppTaskThumbnailSize() Size 返回用於當前 ActivityManager.AppTask縮略圖的當前設計尺寸,用於addAppTask(Activity, Intent, ActivityManager.TaskDescription, Bitmap)
getLockTaskModeState() int 返回當前任務鎖定狀態
moveTaskToFront(int taskId, int flags, Bundle options) 請求與給定任務ID關聯的任務被移動到堆棧的前面,因此用戶現在可以看到它
moveTaskToFront(int taskId, int flags) 同上

getAppTasks
獲取與應用程序關聯的任務列表。

Task
一些相關聯的activity的集合,但activity之間不一定非得相關聯。當我們按home鍵旁邊那個方形鍵(recent-apps)時,屏幕上展示的就是一個個task。

設備相關

1、api

方法 返回值 解釋
getDeviceConfigurationInfo() ConfigurationInfo 獲取設備配置屬性
getLauncherLargeIconDensity() int 獲取啓動器圖標的首選密度
getLauncherLargeIconSize() int 獲取首選的啓動器圖標大小。這在創建自定義可繪製對象時使用(例如,用於快捷方式)
clearApplicationUserData() boolean 允許應用程序從磁盤中擦除自己的數據。這相當於用戶選擇從設備設置 UI 中清除應用程序的數據。它會刪除與應用程序相關的所有動態數據——其私有數據和外部存儲上其私有區域中的數據——但不會刪除已安裝的應用程序本身,也不會刪除任何 OBB 文件。它還撤銷應用程序已獲得的所有運行時權限,清除所有通知並刪除與此應用程序相關的所有 Uri 授權
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章