一、问题描述:
情况1:app安装成功,从launcher(桌面)打开App到登录页--->输入手机号点击确定---->到输入密码页。然后再按home键返回到桌面再打开,此时Activity无法定位到输入密码页面,而是回到了登录页。
情况2:app通过浏览器下载,成功后利用浏览器安装器打开---->输入手机号点击确定---->到输入密码页。然后再按home键返回到桌面再打开,此时Activity无法定位到输入密码页面,而是回到了登录页。此时按返回键,会回到输入密码页。
二、原因描述:
1.第一种情况绝大多数原因是因为启动页的launchMode设置了singleTask。
2.第二种情况是因为从launcher桌面打开和直接用安装器打开app所用的参数不同。
三、解决方案:
1.第一种情况通过去掉再启动页中的launchMode=singleTask来完成
2.第二种情况则除了要去掉启动页launchMode=singleTask外还需要再启动页的setContentView之前加入如下代码才行:
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if (intent.flags and Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT != 0) { finish() return }
如果不加上面的代码经测试会发现,从launcher点击家打开app则一切正常,从安装器中打开app,就变得不正常了。
四、总结
在实际的项目中需要综合考虑以上两种情况,确保无论是哪个入口app都能正常使用。其实这个问题要认真算起来还蛮严重的,加入你进入的不是输入密码页面,而是注册获取验证码页面,一旦home键,去查看验证码,然后再打开则原来的输入验证码页面就不见了,这种请款给用户的体验是非常不好的。
ps:附上参考链接:
https://blog.csdn.net/liuyewu101/article/details/51506263
https://blog.csdn.net/epitomizelu/article/details/103241679
https://www.jianshu.com/p/b202690b7d96