天天看點

Android系統的程序,任務,服務的資訊



   擷取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);
 
   
 
                }
             }      
Android系統的程式,任務,服務的資訊

            服務擷取資訊

@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);
  
 
  
                 }
  
             }      
Android系統的程式,任務,服務的資訊

              程序擷取資訊

@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);  
                 }  
             }      
Android系統的程式,任務,服務的資訊