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 中添加:
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();
return;
}
}
}