app点击桌面图标每次重新启动

昨天同事无意间碰到了这样一种情况,在浏览器中安装app后打开然后按下home键,这时再在桌面点击app图标打开,发现应用重启了,然后多次点击图标每次都重启,问我为什么会出现这样的问题,私下仔细揣摩了下找到了解决办法,以此记录下:

首先找到manifest中带有:

<intent-filter>
      <action android:name="android.intent.action.MAIN"/>
      <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>

这段代码声明的activity,这是app启动的第一个activity,然后在这个activity的oncreate方法中添加如下判断:

if (!this.isTaskRoot()) {
            Intent intent = getIntent();
            if (intent != null) {
                String action = intent.getAction();
                if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(action)) {
                    finish();
                }
            }
        }

首先判断该activity是否是根activity(第一个启动的activity),然后回去intent,判断intent中是否带有CATEGORY_LAUNCHER和ACTION_MAIN,如果有就认为是从桌面启动的app,如果后台有已经存在的任务栈,就会把这个任务栈从后台移到前台展示,如果后台没有该app的任何任务栈就会跳过这段代码重新启动app。

    原文作者:猿田
    原文地址: https://www.jianshu.com/p/0416e4216c99
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞