• 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之前加入如下代码才行:

    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

      

  • 相关阅读:
    Selenium RC和WebDriver的实现区别(一)
    布线问题
    C语言播放音乐
    圈水池
    双向BFS
    Asp.net MVC3 Razor中的扩展HtmlHelper的返回类型问题
    使用Visual Studio 利用WinGDB编译和远程调试嵌入式Linux的程序
    IoTSharp部署教程Sqlite分表篇
    sql 2005性能调优
    Sql养成一个好习惯是一笔财富
  • 原文地址:https://www.cnblogs.com/tony-yang-flutter/p/14430112.html
Copyright © 2020-2023  润新知