歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android系統的進程,任務,服務的信息

Android系統的進程,任務,服務的信息

日期:2017/3/1 10:35:06   编辑:Linux編程
獲取Android系統中進程,任務,服務信息,需要通過ActivityManager類來實現。

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);
}
}

進程獲取信息
@Override
public void onClick(View v) {

String info = "";
List<RunningAppProcessInfo> apps = am.getRunningAppProcesses();
for(RunningAppProcessInfo app:apps){
info = "進程信息開始:\n";
info += "當前進程的用戶Id:" + app.uid + "\n";
info += "當前進程的名稱:" + app.processName + "\n";
info += "當前進程Id:" + app.pid + "\n";
info += "進程在系統中的重要級別:" + app.importance + "\n";
info += "進程的重要原因代碼:" + app.importanceReasonCode + "\n";
info += "進程中組件的描述信息:" + app.importanceReasonComponent + "\n";
info += "當前進程的子進程Id:" + app.importanceReasonPid + "\n";
info += "在同一個重要級別內的附加排序值:" + app.lru + "\n";

System.out.print(info);
}
}
Copyright © Linux教程網 All Rights Reserved