Android 我想获取正在运行的应用程序的状态

Android 我想获取正在运行的应用程序的状态,android,Android,应用程序状态示例:前台/后台 简短回答:你不能这样做-没有用于此的API 更准确的回答是:您可以运行类似于ps的命令来获取一些基本流程信息,但这取决于特定设备是否允许您执行类似的控制台命令,以及是否安装了ps二进制文件。谷歌快速搜索为我提供了帮助。基本原则是: 在清单文件中添加权限: <uses-permission id="android.permission.GET_TASKS"/> 在您的活动中,请执行以下操作: @SuppressWarnings("unchecke

应用程序状态示例:前台/后台

简短回答:你不能这样做-没有用于此的API


更准确的回答是:您可以运行类似于
ps
的命令来获取一些基本流程信息,但这取决于特定设备是否允许您执行类似的控制台命令,以及是否安装了
ps
二进制文件。

谷歌快速搜索为我提供了帮助。基本原则是:

在清单文件中添加权限:

<uses-permission id="android.permission.GET_TASKS"/> 

在您的活动中,请执行以下操作:

 @SuppressWarnings("unchecked")
 private void updateTaskList() {
      /* Grab the Systems IActivityManager. */
      IActivityManager myActivityManager = ActivityManagerNative.getDefault();
      /* Will hold all the task"".toString()"" entries */
      ArrayList<String> listEntries = new ArrayList<String>();
      try {
           int showLimit = 1;
           /* Get all Tasks available (with limit set). */
           List<IActivityManager.TaskInfo> allTasks = myActivityManager
                     .getTasks(showLimit, 0, null);
           int i = 1;
           /* Loop through all tasks returned. */
           for (IActivityManager.TaskInfo aTask : allTasks) {
                listEntries
                          .add("" + (i++) + ": "
                                    + aTask.baseActivity.getClassName() + " ID="
                                    + aTask.id);
           }
      } catch (DeadObjectException e) {
           Log.e("TaskManager", e.getMessage(), e);
      }
      /* Display out listEntries */
      setListAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1_small, listEntries));
 }
@SuppressWarnings(“未选中”)
私有void updateTaskList(){
/*抓住Systems IActivityManager*/
IActivityManager myActivityManager=ActivityManagerActive.getDefault();
/*将保存所有任务“.toString()”项*/
ArrayList listEntries=新建ArrayList();
试一试{
int showLimit=1;
/*获取所有可用任务(设置限制)*/
列出所有任务=myActivityManager
.getTasks(showLimit,0,null);
int i=1;
/*循环执行返回的所有任务*/
对于(IActivityManager.TaskInfo或任务:所有任务){
听众
.add(“+(i++)+”:“
+aTask.baseActivity.getClassName()+“ID=”
+aTask.id);
}
}catch(deadobjecte异常){
Log.e(“TaskManager”,e.getMessage(),e);
}
/*显示列表项*/
setListAdapter(新阵列适配器)(此,
android.R.layout.simple_list_item_1_small,listEntries));
}
请注意,我还没有试过这个。。。它只是来自我上面链接的那个站点。

Context=this.getApplicationContext();
    Context context = this.getApplicationContext();
    ActivityManager mgr = (ActivityManager)context.getSystemService(ACTIVITY_SERVICE);

    ConfigurationInfo config = mgr.getDeviceConfigurationInfo();
    List<RunningAppProcessInfo> processes = mgr.getRunningAppProcesses();
    List<RunningTaskInfo> tasks = mgr.getRunningTasks(100);

    String text = "";

    text += "Running tasks: \n";
    for(Iterator i = tasks.iterator(); i.hasNext(); )
    {
        RunningTaskInfo p = (RunningTaskInfo)i.next();
        text += p.baseActivity.flattenToString() + "\n";
    }
ActivityManager mgr=(ActivityManager)context.getSystemService(ACTIVITY_服务); ConfigurationInfo config=mgr.getDeviceConfiguration(); List processs=mgr.getRunningAppProcesses(); 列表任务=经理getRunningTasks(100); 字符串文本=”; text+=“正在运行的任务:\n”; for(迭代器i=tasks.Iterator();i.hasNext();) { RunningTaskInfo p=(RunningTaskInfo)i.next(); text+=p.baseActivity.FlatterString()+“\n”; }

等等

那么这些任务管理器应用程序是如何存在的呢?我想它们使用的是非公共API,如您的回答所示。我在文档中没有看到IActivityManager,所以我认为这是旧代码。我在9个月前发布了此代码。。。事情变了。