2011-03-11 21 views
6

我想觀看我的android手機最近的任務。我正在嘗試從互聯網上的一些代碼,但他們沒有正常工作。我只想獲得用戶執行的最後一個應用程序的PID和名稱。例如,如果我執行計算器應用程序,並在此之後執行最近的任務應用程序,則此應用程序可以告訴我類似如下內容:「您執行的最後一個應用程序是'calculator',PID是'2222' 」。查看Android用戶執行的最近任務

我正在檢查Android開發人員網頁上的一些代碼,這是我發現的,但我不知道如何實現Android。

ActivityManager.RecentTaskInfo您可以檢索有關用戶最近開始或訪問過的任務的信息。

ActivityManager.RunningServiceInfo您可以檢索有關係統當前正在運行的特定服務的信息。

任何建議,

問候

ActivityManager.RunningTaskInfo你可以檢索有關係統當前「跑」特定任務的信息。

回答

4

這裏是我的解決方案:

final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
final List<RunningTaskInfo> recentTasks = activityManager.getRunningTasks(Integer.MAX_VALUE); 

    for (int i = 0; i < recentTasks.size(); i++) 
    { 
     Log.d("Executed app", "Application executed : " +recentTasks.get(i).baseActivity.toShortString()+ "\t\t ID: "+recentTasks.get(i).id+"");   
    } 

小心!!最後的ID是不是進程的PID!如果你想獲得進程的PID我用下面的命令:

mLogcatProc = Runtime.getRuntime().exec(new String[] {"ps"}); 

讀取結果發現應用程序的名稱,然後分裂,獲得PID過程。

+0

但我怎樣才能拆分該字符串? – 2014-02-09 19:08:55

+0

需要什麼權限? – 2014-03-20 16:49:13

+1

getRunningTasks自API 21以來已被棄用 – 2014-11-29 13:23:10

1

我最近正在檢查也正在使用活動管理器的可用服務。 可能只是將其更改爲getRecentTasks(int maxNum,int flags)方法,並根據需要修改下面的內容!?

private boolean isServiceOnline() { 

      final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 

      final List<ActivityManager.RunningServiceInfo> services = activityManager.getRunningServices(Integer.MAX_VALUE); 
      for (int i = 0; i < services.size(); i++) { 
       String packageClassName = services.get(i).service.getClassName(); 
       if (packageClassName.equals("org.couchdb.android.CouchService")) { 
        Log.d(TAG, "Service Nr. " + i + " :" + services.get(i).service); 
        Log.d(TAG, "Service Nr. " + i + " package name : " + services.get(i).service.getPackageName()); 
        Log.d(TAG, "Service Nr. " + i + " class name : " + packageClassName); 
        ; 
        return true; 
       } 
      } 
      return false; 
     } 
7
int numberOfTasks = 1; 
ActivityManager m = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE); 
//Get some number of running tasks and grab the first one. getRunningTasks returns newest to oldest 
RunningTaskInfo task = m.getRunningTasks(numberOfTasks).get(0); 

//Build output 
String output = "the last application you've executed is '"+task.id+"' and the PID is '"+task.baseActivity.toShortString()+"'"; 

getRunningTasks

RunningTaskInfo

相關問題