为RunningTaskInfo设置唯一标识符

时间:2014-08-08 08:47:39

标签: java android

我最近正在编写Android应用程序,并使用 FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_MULTIPLE_TASKS 创建了几项活动。
我想通过 getRunningTasks 获取这些新任务(以及活动)的信息。
另外,我想为这些任务设置一些唯一的标识符,以便方便地管理它们 我尝试使用描述,但无法修改。编码如下:

    ActivityManager am = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE);
    List<ActivityManager.RunningTaskInfo> taskInfos = am.getRunningTasks(2);
    ActivityManager.RunningTaskInfo currentTaskInfo = taskInfos.get(0);
    am.getRunningTasks(2).get(0).description = "dfasdfsa";  
    Toast.makeText(this,am.getRunningTasks(2).get(0).description, 10).show();  

当Toast显示时,描述的值仍然是 null 。我似乎无法改变它。
请给我一个解决方案,为任务设置一个唯一的标识符 我真的很感谢你的帮助! :)

1 个答案:

答案 0 :(得分:0)

首先,这不是设置taskDescription的方法。要设置taskDescription,您需要使用以下方法:

ActivityManager.TaskDescription taskDescription = 
            new  ActivityManager.TaskDescription("label");
this.setTaskDescription(taskDescription);

这是TaskDescription的简单构造函数,有关更多构造函数,请检查: https://developer.android.com/reference/android/app/ActivityManager.TaskDescription 您可以在那里设置更多描述变量。

第二, am.getRunningTasks(2).get(0).description早已被描述,但是,某些供应商甚至不允许在此之前使用它。

例如,要检查描述是否设置为您的值,可以运行

adb shell dumpsys activity activities

但是,如果您真的想在运行时检查它,则可以在API 21之后使用:

final ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.AppTask> appTasks = am.getAppTasks();
for(ActivityManager.AppTask task : appTasks) {
       Log.d("TaskDesc", "taskDesc: " + task.getTaskInfo().taskDescription);
}