Android按home键打开多个Activity再按home键到桌面,然后再launcher中打开App无法保持状态
一、问题描述:
情况1:app安装成功,从launcher(桌面)打开App到登录页--->输入手机号点击确定---->到输入密码页。然后再按home键返回到桌面再打开,此时Activity无法定位到输入密码页面,而是回到了登录页。
情况2:app通过浏览器下载,成功后利用浏览器安装器打开---->输入手机号点击确定---->到输入密码页。然后再按home键返回到桌面再打开,此时Activity无法定位到输入密码页面,而是回到了登录页。此时按返回键,会回到输入密码页。
二、原因描述:
1.第一种情况绝大多数原因是因为启动页的launchMode设置了singleTask。
2.第二种情况是因为从launcher桌面打开和直接用安装器打开app所用的参数不同。
三、解决方案:
1.第一种情况通过去掉再启动页中的launchMode=singleTask来完成
2.第二种情况则除了要去掉启动页launchMode=singleTask外还需要再启动页的setContentView之前加入如下代码才行:
1 2 3 4 5 6 | 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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
2014-02-22 Android 截取屏幕图片并保存
2014-02-22 Android 将拼接好并加上边框的图片保存到内存卡中