【Android】桌面進入應用重啟問題
使用手機系統第一次安裝apk之後直接開啟,進入應用二級選單,將應用退到後臺,然後再次從桌面進入應用,出現應用重啟重新回到主選單的問題。
此問題應該算是一個廠商問題,從log來看,當從第一次開啟的應用進入到後臺之後,然後從桌面點選應用的資訊如下:
第一次安裝完之後開啟應用:
Line 33: 05-18 16:12:11.604 1511 1980 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.example.wg.webviewtest cmp=com.example.wg.webviewtest/.MainActivity} from uid 10076 and from pid 18195 on display 0
進入應用二級選單:
Line 107: 05-18 16:12:14.664 1511 2713 I ActivityManager: START u0 {cmp=com.example.wg.webviewtest/.NativeMainActivity} from uid 10201 and from pid 19256 on display 0
使用HOME鍵退出後臺:
Line 157: 05-18 16:12:15.817 1511 1742 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000
再次從桌面進入應用
Line 179: 05-18 16:12:17.108 1511 1593 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.wg.webviewtest/.MainActivity bnds=[540,966][792,1260]} from uid 10053 and from pid 2715 on display 0
應用收到的log資訊:
第一次開啟應用的intent
Line 23: 05-18 16:30:58.739 21998 21998 D MainActivity: =====General Intent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000pkg=com.example.wg.webviewtest cmp=com.example.wg.webviewtest/.MainActivity }
退出到後臺後,第二次從桌面開啟應用的intent
Line 181: 05-18 16:31:03.480 21998 21998 D MainActivity: =====General Intent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10600000cmp=com.example.wg.webviewtest/.MainActivity bnds=[540,966][792,1260] }
從網上參考的解釋為利用系統安裝器開啟程式,有些廠商在啟動的Intent是沒有帶Category, 而我們自己開啟程式是帶了Category:
https://blog.csdn.net/u010351494/article/details/72974477
導致的這種問題,最後通過再onCreate中新增如下程式碼,確實解決了問題:
if((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0){ Log.d(TAG,"=====getIntent="+getIntent().toString()); finish(); return; } 此問題的除錯花費了很多時間,剛開始以為是自己應用程式碼的問題,反覆除錯launchMode,懷疑是記憶體問題異常殺掉了應用的二級選單,反正都無果而終,最後還是靠查閱網上資料獲得方法。。