Android同一个应用app最近任务有多个Activity窗口

  • Post author:
  • Post category:其他


最近开发一个应用, 发现Activity跳转之后,  最近任务里面有两个窗口, 类似这样

照的不是很清楚, 大体就这样, 两个窗口分别是两个Activity, 属于同一应用的.

出现这样的原因是因为两个Activity不属于同一个Task,

区分标志是清单文件里的taskAffinity这个属性:

  • taskAffinity表示当前activity具有亲和力的一个任务(翻译不是很准确,原句为The task that the activity has an affinity for.),大致可以这样理解,这个 taskAffinity表示一个任务,这个任务就是当前activity所在的任务。
  • 在概念上,具有相同的affinity的activity(即设置了相同taskAffinity属性的activity)属于同一个任务。

  • 一个任务的affinity决定于这个任务的根activity(root activity)的taskAffinity。

  • 这个属性决定两件事:当activity被re-parent时,它可以被re-paren哪个任务中;当activity以FLAG_ACTIVITY_NEW_TASK标志启动时,它会被启动到哪个任务中。(这个比较 难以理解,请结合中的属性allowTaskReparenting和Intent中的标志 FLAG_ACTIVITY_NEW_TASK加以理解)

  • 默认情况下,一个应用中的所有activity具有相同的taskAffinity,即应用程序的包名。我们可以通过设置不同的taskAffinity属性给应用中的activity分组,也可以把不同的 应用中的activity的taskAffinity设置成相同的值。

  • 为一个activity的taskAffinity设置一个空字符串,表明这个activity不属于任何task。

所以,

如果想保持多个窗口, 就保证多个Activity的taskAffinity值不同;

如果想保持单个窗口, 就保证保证多个Activity的taskAffinity值一致;

参考文章:

https://www.cnblogs.com/dongweiq/p/8385614.html



版权声明:本文为zhouwengong原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。