1. 程式人生 > >Android應用第一次安裝成功點選“開啟”後Home鍵切出應用後再點選桌面圖示返回導致應用重啟問題

Android應用第一次安裝成功點選“開啟”後Home鍵切出應用後再點選桌面圖示返回導致應用重啟問題

PS:問題其實描述起來我是這麼理解的:就相當於我們的應用在本應用內開啟第三方比如支付寶比如QQ之類的,此時他們執行在我們應用的棧裡,和你單獨去手機裡啟動那些應用所執行的棧肯定不是一個,所以當我們通過點選開啟來啟動應用時,此時應用相當於存在於系統程式安裝器所在的棧裡。我們按了home之後,是在自己的棧裡,所以我們看到感覺應用重啟了,其實是運行了兩個“不同”的應用。

以下是網上找的別人的分析和解決辦法,親測可用,下面的解決辦法要加在你程式的第一個activity中去。

最近專案中遇到一個問題,使用者第一次安裝應用在系統的安裝器安裝完成介面有“完成”和“開啟”兩個按鈕。

當用戶點選“開啟”按鈕進入使用者註冊頁面進行手機號驗證碼傳送和驗證碼輸入等操作介面,若此時使用者點選Home鍵切出應用到桌面,再從桌面點選應用程式圖示試圖切迴應用完成驗證碼輸入等操作時,應用重新走了歡迎頁等步驟,此時之前從系統的安裝完成介面點選開啟啟動的應用其實還在後面執行。

然而當用戶“完全退出”應用,或者在安裝完成介面直接點選“完成”按鈕再從桌面啟動,或者此應用之前是存在的“覆蓋安裝”後點擊“開啟”按鈕都是不會導致應用程式“多次啟動”的。

經過查詢也試過很多種方法,設定activity的launchMode等都不能解決此問題,廢話不多說,上解決辦法。

其實原因很簡單,利用程式安裝器開啟程式,啟動的Intent是沒有帶Category,而我們自己開啟程式是帶了Category,所以只需要在配置Intent.ACTION_MAIN的Activity判斷下有無Category。然後放到通知欄的時候要更具有無Category 來生成啟動的Intent。

if((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0){
   finish();
   return;
}

在應用程式設定應用程式入口Activity的onCreate方法中加入上面的判斷,完美解決應用程式多次重啟問題。

特別鳴謝: