Android Activity Task taskAffinity launchMode 之间的关系

写这篇博客源于今天碰到的一个bug,于此记录下来并分享给网友们。

问题大概描述是设定一个倒计时,时间到了后,在页面显示一个activity,点击finish掉该activity。但是发现设定完倒计时后,进入Home,锁屏等待时间。

时间到,finish掉后问题来了,按理应该显示的是Home,结果显示的是设定倒计时的页面,很不合理。

先说解决方法,taskAffinity设置为空同时launchmode 为singletask。关于这个变量如果不自定义的话默认为应用包名。

分析:taskAffinity设置为空同时launchmode 为singletask, 系统首先检查是否有taskAffinity值相同的task,没有就新建一个,而且这个task只有一个元素。这样这个task就不同于应用其他activity所在的task,finish掉后,该task应该也会被销毁。

关键处来了,这个时候android系统直接切刀home所在的task,显示这个task的栈顶activity,没有看源码,不清楚android如何管理task,推测可能home所在的task的taskAffinity就是为空,所以返回了home。真正原因需要去阅读源码了查看android如何管理task的


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值