你是不是很想知道目前狀态下,系統在背景正運作着的activity呢?這裡,讓我們一起來實作吧。
/**
* 擷取系統中正在運作的任務資訊(強調下,任務是多個activity的集合)
*/
public void run(){
String info = "" ;
// 擷取的正在運作的activity的最大數量(防止太多,系統承受不了啊)、
int maxNum = 40;
// ActivityManager的功能是為系統中所有運作着的Activity互動提供了接口,主要的接口圍繞着運作中的程序資訊,任務資訊,服務資訊等
ActivityManager activityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
/**
* 擷取正在運作的任務這裡一定要注意,這裡我們擷取的時候,
* 你的任務或者其中的activity可能沒結束,但是當你在後邊使用的時候,很有可能已經被kill了哦。
* 意思很簡單,系統返給你的正在運作的task,是暫态的,僅僅代表你調用該方法時系統中的狀态,
* 至于後邊是否發生了該變,系統概不負責、
*/
List<ActivityManager.RunningTaskInfo> runningTasks = activityManager.getRunningTasks(maxNum);
for(ActivityManager.RunningTaskInfo taskInfo:runningTasks){
info+="一個任務資訊開始:/n";
info+="目前任務中正處于運作狀态的activity數目:"+taskInfo.numRunning;
info+="目前任務中的activity數目: "+taskInfo.numActivities;
info+="啟動目前任務的activity名稱:"+taskInfo.baseActivity.getClassName();
}
注意:這裡要給android.permission.GET_TASKS權限哦。
上面的代碼,我們隻能擷取到運作中的task(任務),那麼如何獲得背景運作的service資訊呢?
請看代碼:
/***
* 擷取運作在背景中的service
*/
private void run2(){
String info = "";
int maxNum = 30;
ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
// 注意這裡擷取的方法和傳回值的類型都變化了啊
List<ActivityManager.RunningServiceInfo> serivces = activityManager.getRunningServices(maxNum);
for(RunningServiceInfo service:serivces){
info = "一個service資訊開始:/n";
info+="目前service的啟動時間:"+service.activeSince;
info+="連結到目前service用戶端的數量:"+service.clientCount;
}
}
---------------------------------------------------------------------------------------
下面,我們展示下,對于RunningTaskInfo和RunningServiceInfo兩個類,我們可以擷取的資訊