日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android中ActivityManager学习笔记

發布時間:2025/6/15 Android 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android中ActivityManager学习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


? ? 在之前寫過2篇關于ActivityManager的文章,如下所示。都是通過實戰去了解里面的信息,現在感覺太繁瑣,所以做一個api介紹比較詳細。就像之前學習Telephony那樣,對整體了解整個ActivityManager很有用。

ActivityManager

? ? android.app包,含有6個內部類:

MemoryInfoProcessErrorStateInfoRecentTaskInfoRunningAppProcessInfoRunningServiceInfoRunningTaskInfo

? ? 先從ActivityManager API下手。

Constants

META_HOME_ALTERNATE

? ? 主activity中的標簽值

MOVE_TASK_NO_USER_ACTION

? ? 對于用戶策動的活動,當前activity不會收到提示

MOVE_TASK_WITH_HOME

? ? 將后面的任務立即移動到前面

RECENT_IGNORE_UNAVAILABLE

? ? 提供一份不包含任何當前任務的列表,這些任務對于用戶是不可見的

RECENT_WITH_EXCLUDED

? ? 返回所有的任務

Methods

public boolean clearApplicationUserData ()

? ? 清楚用戶數據

public void dumpPackageState (FileDescriptor fd, String packageName)

? ? 獲取相應包名對應的apk的各種狀態信息

public ConfigurationInfo getDeviceConfigurationInfo ()

? ? 獲取設備配置信息

public int getLargeMemoryClass ()

? ? 當一個應用程序在一個大的堆棧空間里運行時,估算當前設備中每一個應用內存片段的值

public int getLauncherLargeIconDensity ()

? ? Lancher啟動器的圖標像素密度

public int getLauncherLargeIconSize ()

? ??啟動器圖標大小

public int getLauncherLargeIconSize ()

? ? 當前設備每個應用的內存分類,就是內存的底線。低于這個值應用就會崩潰。

public void getMemoryInfo (ActivityManager.MemoryInfo outInfo)

? ? 當前系統的內存信息

public static void getMyMemoryState (ActivityManager.RunningAppProcessInfo outState)

? ? 返回調用者進程的全局內存狀態信息。

public MemoryInfo[] getProcessMemoryInfo (int[] pids)

? ? 進程所使用的內存信息

public List getProcessesInErrorState ()

? ? 當系統發生錯誤的時候,獲取當前運行的一些進程的信息

public List getRecentTasks (int maxNum, int flags)

用戶啟動的任務列表

public List getRunningAppProcesses ()

? ? 當前設備運行著的應用進程信息

public PendingIntent getRunningServiceControlPanel (ComponentName service)

? ? 返回一個PendingIntent,該PendingIntent會啟動一個控制面板,里面會顯示當前系統運行的一系列服務。

public List getRunningServices (int maxNum)

? ? 當前運行的服務信息

public List getRunningTasks (int maxNum)

? ? 當前系統運行的任務信息

public boolean isLowRamDevice ()

? ? 是否是低內存的設備

public static boolean isRunningInTestHarness ()

? ? 判斷設備是否運行在測試框架

public static boolean isUserAMonkey ()

? ? 判斷當前設備是否被Monkey亂點中

public void killBackgroundProcesses (String packageName)

? ? 殺死對應包的后臺進程

public void moveTaskToFront (int taskId, int flags, Bundle options)

public void moveTaskToFront (int taskId, int flags)

? ? 講給定的id對應的任務移動到任務棧隊列的最前面。

public void restartPackage (String packageName)

? ? 在API 8中已廢除

? ??Nested class

MemoryInfo

? ? 通過getMemoryInfo(ActivityManager.MemoryInfo)獲得該對象,可以用來檢索有效的內存信息

Fields

public long availMem

? ? 系統中的可見內存

public boolean lowMemory

? ? 系統判斷自己是否處于低內存的情況

public long threshold

? ? 當內存太低,開始殺死后臺服務和其他非外來的進程時,內存的臨界值

public long totalMem

? ? 內核中所有內存數

ProcessErrorStateInfo

? ? 在發生錯誤時,檢索內存中的有關信息

Constans:

? ??int CRASHED:奔潰

? ??int NOT_RESPONDING:無回應

? ??int NO_ERROR:0.狀況碼,無錯誤

Fields

? ? public int condition:進程中的狀態碼

? ? public byte[] crashData:(已經被棄用),空值

? ? public String?longMsg:一個表述錯誤狀態的長信息

? ? pubic int pid:進程id

? ? pubic String processName:發生錯誤或奔潰的進程的進程名稱

? ? public String shortMsg:錯誤碼的縮寫

? ? public String stackTrace:錯誤發生時的堆棧跟蹤信息

? ? public String?tag:與錯誤有關的activity名

? ? public int uid:用戶id

RecentTaskInfo

? ? 用戶最近訪問和啟動的任務信息

Fields

? ? public Intent baseIntent:啟動任務的原始Intent,可以用它重啟任務或者將當前任務移動到任務列表的最前面

? ? public CharSequence description:描述任務上次的狀態

? ? public int id:唯一標識當前運行的任務

? ? public ComponentName origActivity:intent啟動的實體控件

? ? public int persistentId:任務的永久id號,不管該任務有沒有運行

RunningAppProcess

? ? 與正在運行的進程有關信息可以通過該類獲得。

Constants

? ? IMPORTANCE_BACKGROUND:importance變量的值之一。處于后臺,但是仍然消耗資源的進程

? ? IMPORTANCE_EMPT:importance變量的值之一。空進程

? ? IMPORTANCE_FOREGROUND:importance變量的值之一。處于用戶界面的進程。

? ? IMPORTANCE_PERCEPTIBLE:同上。仍然運行著某些對用戶有用的的東西

? ? IMPORTANCE_SERVICE:同上。該進程包含仍在運行的服務

? ? IMPORTANCE_VISIBLE:同上。運行某些對用戶可見的東西,但不是立即顯示在UI界面上,

? ? REASON_PROVIDER_IN_USE:importanceReasonCode變量的值之一。應用的content provider中正被其他進程調用

? ? REASON_SERVICE_IN_USE:同上。

? ? REASON_UNKNOWN:同上。無特殊原因

Fields

? ? public int importance:重要性等級

? ? public int importanceReasonCode:重要原因code

? ? public ComponentName importanceReasonComponent:到當前進程中使用的組件

? ? public int importanceReasonPid:進程客戶端其他進程的進程id。

? ? public int lastTrimLevel:報告給進程最后內存的等級

? ? public int lru:近期最少使用算法,即為importance進行排序。

? ? public int pid:進程id

? ? public String[] pkgList:該進程加載的所有包名

? ? public String processName:與當前對象相關的進程名稱

? ? public int uid:用戶id

RunningServiceInfo

? ? 當前系統中運行的特殊服務

Constants

? ? FLAG_FOREGROUND:前臺進程

? ? FLAG_PERSISTENT_PROCESS:持續進程

? ? FLAG_STARTED:已啟動

? ? FLAG_SYSTEM_PROCESS:核心系統進程

Fields

? ? public long activeSince:第一次啟動的時間

? ? public int clientCount:連接到該服務的客戶端數量

? ? public int clientLabel:客戶端標簽

? ? public String clientPackage:客戶端包名

? ? public int crashCount:在服務運行過程中奔潰的次數

? ? public int flags:運行標志

? ? public boolean foreground:判斷是否位于前端UI界面上

? ? public long lastActivityTime:最后的活動時間

? ? public int pid:進程id

? ? public String process:服務所在的進程名

? ? public?long?restarting:重新啟動的時間,如果非空,代表該服務當前不在運行。等待一段時間后重啟。

? ? public ComponentName service:服務組件

? ? public boolean started:是否已經啟動

? ? public int uid:用戶id

RunningTaskInfo

? ? 當前在系統中運行的特定任務信息,這些任務不是意味著有進程活動的任務,而是簡單的標識用戶已經離開該任務,但是沒有關閉,但是當前系統可能會殺死該進程,只支持它的狀態,等用戶返回后重新啟動。

Fields

? ? public ComponentName baseActivity:任務中第一次啟動的activity.

? ? public CharSquence description:任務當前狀態的描述

? ? public int id:任務id

? ? public int numActivities:當前任務中活躍的activity數

? ? public in numRunning:當前任務中運行的activity數(沒有停止和持續的activity)

? ? public Bitmap thumbnail:當前狀態的縮略圖

? ? public ComponentName topActivity:任務歷史棧最上層的activity.

? ??總結

? ? 這一篇文章從ActivityManager講起,逐漸講解了其中的6個內部類,代表程序運行過程中所涉及到的各個進程、app、service、task的信息。對ActivityManager所管理的內容有了初步的了解。




總結

以上是生活随笔為你收集整理的Android中ActivityManager学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。