app 退出到後臺後,未被殺死,仍在運行,但是點擊圖標後會重新啓動一次,再次重新創建一系列頁面
項目中遇到了這個問題,非常影響用戶的體驗。
解決方法:
在APP的 啓動頁 中的onceate() 方法中加入此段代碼即可。
if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
finish();
return;
}
其實原因很簡單,利用程序安裝器打開程序,啓動的Intent是沒有帶Category,而我們自己打開程序是帶了Category,所以只需要在配置Intent.ACTION_MAIN的Activity判斷下有無Category。然後放到通知欄的時候要更具有無Category 來生成啓動的Intent。
或者
// 避免從桌面啓動程序後,會重新實例化入口類的activity
if (!this.isTaskRoot()) { // 當前類不是該Task的根部,那麼之前啓動
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;
}
}
}
感謝: