写这篇博客源于今天碰到的一个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的