问题:
定义activity A,B
比如应用打开之后先显示A ,通过某个按钮 打开B ,这时候按home键。再从桌面打开应用,我希望看到B 。
解决方法:
1.在manifest中A的 launchMode删掉。
2.在A的oncreate中加入如下逻辑。
if (intent.flags and Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT != 0) {
finish()
return
}
这么做的原因:
1.一般人喜欢把A的launchMode定义为singleTask。这样可以避免应用重复创建activity。但是有一个弊端就是,当这个A上面显示了别的activity,比如B。如果此时你从桌面打开应用,app会删除A上面所有的activity。导致B被删掉。所以我们不能定义A的launchMode为SingleTask。
2.那我们证明避免重复创建A的实例呢,可以看上面的步骤2。 当这个intent是应用从后台唤起,显示在前台的时候,则说明此次行为为热启动。我们就把这次的activity finish掉,这样就不会有activity覆盖在B上面了。