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

最近开发一个应用, 发现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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值