APP内点击HOME键切出后再次点击桌面图标会重启APP的bug

Android从APP内点击HOME键切出应用后再次点击桌面图标会重启APP的bug

bug场景

  • 打开APP里的某个页面 — 按Home键 — 从桌面点击APP的图标 — 这个时候希望的是APP打开刚才停留的页面,但是没有,而是APP从启动页开始重新打开了,也就是APP重新启动了,不是想要的结果 — 并且经过尝试发现,如果是从后台菜单选项中点APP的选项打开,是停留在刚才打开着的页面的,没有重启,这个流程是对的。

探索

  • 从后台程序菜单选项中打开程序时,启动的Intent是没有带Category的
  • 而我们自己打开程序时是带了Category的
  • 由以上两条可知,只需要在配置android.intent.action.MAIN的Activity判断一下有无Category

代码

  • 我的启动页是 SplashActivity ,在 manifest 文件中可看到如下
		<activity
            android:name=".activity.SplashActivity"
            android:launchMode="singleTask"
            android:screenOrientation="portrait"
            android:theme="@style/SplashTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
  • 修改 SplashActivity 中的内容,在 onCreate 中添加:
		// 避免从桌面启动程序后,会重新实例化入口类的activity
        // 当前类不是该Task的根部,那么之前启动
        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(); // finish掉该类,直接打开该Task中现存的Activity
                    return;
                }
            }
        }
  • 完成
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章