【问题标题】:See Android recent task executed by the user查看用户执行的 Android 最近任务
【发布时间】:2011-07-13 14:11:05
【问题描述】:

我想看我的安卓手机最近的任务。我正在尝试来自互联网的一些代码,但它们都不能正常工作。我只想获取用户执行的最后一个应用程序的 PID 和名称。例如,如果我执行计算器应用程序,然后执行最近创建的任务应用程序,该应用程序应该能够告诉我类似:“您执行的最后一个应用程序是‘计算器’,PID 是‘2222’ ”。

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

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

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

任何建议,

最好的问候

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

【问题讨论】:

    标签: android task pid


    【解决方案1】:
    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

    【讨论】:

      【解决方案2】:

      这是我的解决方案:

      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进程。

      【讨论】:

      • 但是我怎样才能分割那个字符串呢?
      • 需要什么权限?
      • getRunningTasks 自 API 21 起已弃用
      【解决方案3】:

      我最近正在检查可用的服务,该服务也在使用活动管理器。 可能只是将其更改为 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;
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-18
        • 2022-12-11
        • 2018-05-26
        • 1970-01-01
        • 1970-01-01
        • 2016-10-23
        相关资源
        最近更新 更多