首页Activity重复启动问题
问题:
Activity有很多种启动方式,app启动,不同app互相调,安装完点打开、点击桌面图标等等。
当activity的launchIntent
中的flag
不同的时候,就会创建实例,从而导致重复的问题。用户比较容易感知的就是安装完点打开,然后点击home,再点击桌面,此时会出现情况如下:
1 | override fun onCreate(savedInstanceState: Bundle?) { |
打印结果:
1 |
|
可以看到第二次从桌面直接点击图标启动的时候,pid
是相同的,isTaskRoot
为false
了,栈内压了2个MainActivity
。
解决:
- 在
onCreate
里默默的加上一个if(isTaskRoot()) finish()
退掉好了。 - 更常见的做法是,首页的
launchMode
通常会设置为android:launchMode="singleTask"
栈内唯一即可
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 七夜的小屋!