0

目前,我只能获取最近任务的 ID,如下所示:

final List<RecentTaskInfo> recentTasks = activityManager.getRecentTasks(Integer.MAX_VALUE, 1);
for (int i = 0; i < recentTasks.size(); i++) 
{
     System.out.println(""+recentTasks.get(i).id);
}

但是如何获取其他信息?像 package_name、main_activity 等等?

我还发现一些 ID 是-1. 这是什么意思?我们能得到这些任务的信息吗?

4

2 回答 2

2

-1表示任务当前未运行。

您可以使用recentTaskInfo.baseIntent获取Intent用于启动任务的 ,然后例如使用 获取包名称intent. getComponent().getPackageName()

于 2013-10-01T17:55:35.100 回答
1

在这里,我使用此代码将正在运行的应用程序从后台带到前台。我希望这可以帮助你...

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
 {  
final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
final List<RecentTaskInfo> recentTasks = activityManager.getRecentTasks(Integer.MAX_VALUE, ActivityManager.RECENT_IGNORE_UNAVAILABLE);

RecentTaskInfo recentTaskInfo = null;

for (int i = 0; i < recentTasks.size(); i++) 
{
    if (recentTasks.get(i).baseIntent.getComponent().getPackageName().equals(packageName)) {
       recentTaskInfo = recentTasks.get(i);
       break;
    }
}

if(recentTaskInfo != null && recentTaskInfo.id > -1) {
    activityManager.moveTaskToFront(recentTaskInfo.persistentId, ActivityManager.MOVE_TASK_WITH_HOME);
    return;
}
}
于 2013-11-26T07:47:35.603 回答