Android Activity Task taskAffinity launchMode 之间的关系

来源:互联网 发布:中国基尼系数算法 编辑:程序博客网 时间:2024/05/29 15:00

写这篇博客源于今天碰到的一个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
原创粉丝点击