前言:
前段时间测试人员给我看了一个问题:APP登录成功进入首页,然后按下HOME键,再点击桌面图标APP又重新走了闪屏页,然后进入了登录页。当时这个问题吓我一跳,工作也几年了但是没遇到过这种情况,于是网上查找了解决方法。
在启动页的setContentView前面紧挨着加这么一个判断
if((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0){
finish();
return;
}
复现:
通过程序安装器安装打开的APP,界面此时会显示“完成”和“打开”,如果点击完成的话,通过桌面图标启动是没问题的,但是如果点击“打开”来启动APP的话,按下HOME 键再打开APP的话,启动页是重新启动的。
分析:
1.通过桌面启动的页面flag会带有FLAG_ ACTIVITY_ RESET_ TASK_ IF_ NEEDED,有这个标记Task不会重复启动,保证唯一
2.通过程序安装器启动的页面flag会带有FLAG_ ACTIVITY_ BROUGHT_ TO_ FRONT,因此在启动APP的时候,判断此页面有没有FLAG_ACTIVITY_BROUGHT_TO_FRONT这个标记,如果有这个标记直接finish当前页面就行了。