美文网首页
关于按下home键再次打开应用重新启动的解决方法

关于按下home键再次打开应用重新启动的解决方法

作者: 笑对浮华 | 来源:发表于2019-12-03 11:21 被阅读0次

    在项目开发中遇到一个问题,打开应用进入到某个页面,按下home键后再次进入应用时,总是进入启动页而不是之前的页面,如果按返回键就是进入到之前的页面,这样用户体验很不好,网上主要介绍了两种解决方法。

    1、在AndroidManifest.xml文件中对LoginActivity和MainActivity设置启动模式为singleTask,即在activity下加入以下代码:android:launchMode="singleTask";
    2、在打开应用最先启动的activity的onCreate()方法的setContentView()方法之前加入以下代码:

    if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
        finish();
        return;
    }
    

    第一种方法没能解决掉问题,第二种方法解决了。
    第二种方法的原理:
    正常情况下,打开应用启动A页面,再跳转到B页面,然后按下home键再进入应用,会重新创建A页面,此时A页面在B页面的上面,所以也就出现了问题描述中“如果按返回键就是进入到之前的页面”的情况;
    加入判断后,再打开app,还会重新创建A页面,但是此时会判断一下,这时A页面不是在栈底,所以finish掉,然后露出下面的B页面。


    2020.1.20更新:继上一次改动之后,这个突然又出现了,在网上搜了下,还是只有两种呼声,第二种答案就是目前所用的,但问题又出现了,所以又试了下另一种,就是去AndroidManifest文件中将第一启动的页面的lanuchmode(页面启动模式)去掉,我之前是设置为了singleTask模式。bug复现的原因就是在某一次更新中我把启动页的模式设置成singleTask。
    保险起见两种方法都写在代码里吧,就是:
    1、在AndroidManifest文件中,启动页(初次进入的页面)不要设置android:launchMode="singleTask"属性,如果有了就去掉;
    2、在启动页activity的onCreate()方法里的setContentView()方法之前加上以下代码:

    if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
                finish();
                return;
            }
    

    相关文章

      网友评论

          本文标题:关于按下home键再次打开应用重新启动的解决方法

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