ActivityManager的功能是為系統中所有運行著的Activity交互提供了接口。
ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
通過 List<RunningTaskInfo> runningTasks = am.getRunningTasks(maxNum);返回任務列表信息
通過List<RunningServiceInfo> serivces = am.getRunningServices(maxNum);返回服務列表信息
通過List<RunningAppProcessInfo> apps = am.getRunningAppProcesses(); 返回進程列表信息
下面是RunningTaskInfo,RunningServiceInfo,RunningAppProcessInfo,三個類的解釋:
Android.app.ActivityManager.RunningTaskInfo
屬性名稱
數據類型
描述
baseActivity
ComponentName
任務做為第一個運行中的Activity組件信息
description
CharSequence
任務當前狀態的描述
id
Int
任務的ID
numActivities
Int
任務中所運行的Activity數量,包含已停止的
numRunning
Int
任務中所運行的Activity數量,不包含已停止或不延續運行的
thumbnall
Bitmap
任務當前狀態的位圖表示,目前為null
topActivity
ComponentName
處於任務棧的棧頂的活動組件
Android.app.ActivityManager.RunningServiceInfo
屬性名稱
數據類型
描述
activeSince
long
服務第一次被激活的時間 (啟動和綁定方式)
clientCount
Int
接到該服務的客戶端數目
crashCount
Int
服務運行期間,出現死機的次數
foreground
Boolean
若為true,則該服務在後台執行
lastActivityTime
Long
最後一個Activity與服務綁定的時間
pid
int
若此值不為0,則表示正在運行服務的Id
Process
String
該服務的名稱
restarting
long
若此值不為0,則表示該服務不在運行中,將在參數給定的時間點重啟服務
service
ComponentName
服務的組件名稱
started
boolean
若此值為true,則表示服務已經在啟動運行中
Android.app.ActivityManager.RunningAppProcessInfo
屬性名稱
數據類型
描述
importance
int
進程在系統中的重要級別
importanceReasonCode
int
進程的重要原因代碼
importanceReasonComponent
ComponentName
進程中組件的描述信息
importanceReasonPid
int
當前進程的子進程Id
lru
int
在同一個重要級別內的附加排序值
pid
int
當前進程Id
pkgList
String[]
被載入當前進程的所有包名
processName
String
當前進程的名稱
uid
int
當前進程的用戶Id
代碼:
獲取任務信息
@Override
public void onClick(View v) {
String info = "";
List<RunningTaskInfo> runningTasks = am.getRunningTasks(maxNum);
for (RunningTaskInfo task:runningTasks){
info += "一個任務信息開始:\n";
info += "啟動當前任務的activity名稱:" + task.baseActivity.getClassName()+ "\n";
info += "當前任務狀態的描述:" + task.description.toString()+ "\n";
info += "當前任務Id:" + task.id+ "\n";
info += "任務中所運行的Activity數量,包含已停止的:" + task.numActivities+ "\n";
info += "任務中所運行的Activity數量,不包含已停止或不延續運行的:" + task.numRunning+ "\n";
System.out.print(info);
}
}
服務獲取信息
@Override
public void onClick(View v) {
String info = "";
List<RunningServiceInfo> serivces = am.getRunningServices(maxNum);
for (RunningServiceInfo service:serivces){
info = "一個service信息開始:\n";
info += "服務第一次被激活的時間:" + service.activeSince + "\n";
info += "接到該服務的客戶端數目:" + service.clientCount+ "\n";
info += "服務運行期間,出現死機的次數:" + service.crashCount+ "\n";
info += "若為true,則該服務在後台執行:" + service.foreground+ "\n";
info += "最後一個Activity與服務綁定的時間:" + service.lastActivityTime+ "\n";
info += "正在運行服務的Id:" + service.pid+ "\n";
info += "該服務的名稱:" + service.process+ "\n";
info += "服務的組件名稱:" + service.service+ "\n";
info += "若此值為true,則表示服務已經在啟動運行中:" + service.started+ "\n";
info += "若此值不為0,則表示該服務不在運行中,將在參數給定的時間點重啟服務:" + service.restarting+ "\n";
System.out.print(info);
}
}
進程獲取信息