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;
                }
            }
        }
  • 完成
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章