我最近正在编写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 。我似乎无法改变它。
请给我一个解决方案,为任务设置一个唯一的标识符
我真的很感谢你的帮助! :)
答案 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);
}