现象发生的情况是安装完成之后点击打开运行APP,从MainActivity进入AActivity后,按home回到主界面,再点击图标把APP切回前台运行的话发现打开的是MainActivity不是AActivity。
但是如果安装的时候点击完成,再打开APP就不会这样,具体原因未知,可能是系统的bug吧。
解决办法是在MainActivity中加上:
if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
//结束你的activity
finish();
return;
}
功能就是如果是从栈底把MainActivity移到栈顶的话就finish掉,为了确保这个生效,我们就要修改活动的启动模式并且确保打开AActivity的时候不能栈里还有MainActivity,也就是不能把它finish掉。
然后说一下if后的语句的意思:
getIntent().getFlags()获取的是一个int值,他代表的是获取到的全部flag的或集,然后再Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT进行一下与运算,前者包括后者的话,就为1了;反正为0。
因为flag的个数太多,不便做成集合方式,因此采取了二进制方式判断。