查看用户执行的Android最近任务

时间:2011-03-11 15:31:17

标签: android task pid

我想看看我的Android手机最近的任务。我正在尝试从互联网上获取一些代码,但不能正常工作。我只想获取用户执行的最后一个应用程序的PID和名称。例如,如果我执行计算器应用程序,然后执行我最近的任务应用程序,这个应用程序应该能告诉我类似的事情:“你执行的最后一个应用程序是'计算器',PID是'2222' ”

我正在Android开发者网页上查看一些代码,这是我发现的,但我不知道如何为Android实现。

ActivityManager.RecentTaskInfo您可以检索有关用户最近开始或访问过的任务的信息。

ActivityManager.RunningServiceInfo您可以检索有关当前在系统中运行的特定服务的信息。

任何建议,

祝你好运

ActivityManager.RunningTaskInfo您可以检索有关系统中当前“正在运行”的特定任务的信息。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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过程。

答案 2 :(得分: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;
        }