最近項目中遇到一個問題,用戶第一次安裝應用在系統的安裝器安裝完成界面有“完成”和“打開”兩個按鈕。
當用戶點擊“打開”按鈕進入用戶注冊頁面進行手機號驗證碼發送和驗證碼輸入等操作界面,若此時用戶點擊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;
}
在應用程序設置<action android:name="android.intent.action.MAIN" />應用程序入口Activity的onCreate方法中加入上面的判斷,完美解決應用程序多次重啟問題。
特別鳴謝:
http://bbs.csdn.net/topics/390201703