美文网首页
APP按Home键后,再次进入APP会从启动页开始进入

APP按Home键后,再次进入APP会从启动页开始进入

作者: 见字如晤一 | 来源:发表于2024-07-23 13:03 被阅读0次

    android app为什么每次都重新从启动页进入 安卓手机切换app老是重来
    在启动app的时候,偶然间发现部分手机上每次应用点击home退到后台,再点击launcher上的图标重新进入,每次都会重新启动欢迎界面,然后再进入主界面。
    https://s2.51cto.com/images/blog/202312/27193018_658c0aca1503e10112.gif
    基本流程
    1.启动:WelcomeActivity->MainActivity->OtherActivity
    2.home按下:应用退到后台
    3.点击launcher图标启动应用:WelcomeActivity->MainActivity
    并没有按照预想那样,直接返回之前已经打开的页面。

    image.png
    刚开始还不知所措,以为是项目代码出现了问题,因为项目里对这部分逻辑作了单独处理。
    后来debug发现,流程都是正常的,只有打包出来的apk安装后才会这样。
    最终经过测试得出下面的结论:
    1.直接下载安装是不存在上述问题的
    2.打包成apk点击安装会出现上述问题
    3.出现问题的应用结束进程后不会存在上述问题。

    最后发现apk在通过部分手机系统安装器安装并打开之后,WelcomeActivity的Intent的flags是有差异的。
    我做了一个demo分别打印了正常启动和重复启动WelcomeActivity中的Flags:
    直接启动:


    image.png

    按home键之后重新回到应用:


    image.png
    退出应用后启动:

    解决办法
    所以导致上面应用重复启动原因是,安装器启动的应用,退到后台再返回前台,WelcomeActivity会多出一个FLAG_ACTIVITY_BROUGHT_TO_FRONT的flag。
    实际上已经是重新启动了WelcomeActivity,再由WelcomeActivity启动MainActivity,这个时候如果多次点击home再返回应用,是存在多个MainActivity的实例的
    点击多次返回键就能看出问题。
    所有做的处理就是启动WelcomeActivity时,判断这个WelcomeActivity是不是最初的,如果不是直接结束掉当前的WelcomeActivity,不要再让它走正常流程启动MainActivity。

    image.png

    使用Activity提供的isTaskRoot()方法,改方法会判断当前的Activity是根Activity,如果不是,就返回false。而当我们从后台返回前台时,由于之前已经存在了别的Activity,

    这时应该返回false,如果满足情况,直接结束该Activity。

    相关文章

      网友评论

          本文标题:APP按Home键后,再次进入APP会从启动页开始进入

          本文链接:https://www.haomeiwen.com/subject/lmoyhjtx.html