android:configChanges配置不當,應用被回收重啓,導致應用崩潰

遊戲中調起支付寶支付後(相當與切換應用進程,使原應用調回後臺運行),沒有支付,直接返回(相當於重啓原應用),然後遊戲就閃退了,沒有看到明顯的錯誤日誌,只看到應用被回收相關日誌,觀察生命週期運行情況如下圖:

後來發現是由於android:configChanges配置不當,應用被回收重啓,導致應用崩潰的,android:configChanges配置的作用是阻止應用在某些情況下不容許被系統回收重啓

android:configChanges配置的相關值如下表:

屬性值

含義

mcc

SIM卡唯一標識IMSI(國際移動用戶標識碼)中的國家代碼,由三位數字組成,中國爲:460 這裏標識mcc代碼發生了改變

mnc

 

SIM卡唯一標識IMSI(國際移動用戶標識碼)中的運營商代碼,有兩位數字組成,中國移動TD系統爲00,中國聯通爲01,電信爲03,此項標識mnc發生了改變

locale

設備的本地位置發生了改變,一般指的是切換了系統語言

touchscreen

觸摸屏發生了改變

keyboard

鍵盤類型發生了改變,比如用戶使用了外接鍵盤

keyboardHidden

鍵盤的可訪問性發生了改變,比如用戶調出了鍵盤

navigation

系統導航方式發生了改變

screenLayout

屏幕布局發生了改變,很可能是用戶激活了另外一個顯示設備

fontScale

系統字體縮放比例發生了改變,比如用戶選擇了個新的字號

uiMode

用戶界面模式發生了改變,比如開啓夜間模式-API8新添加

orientation

屏幕方向發生改變,比如旋轉了手機屏幕

screenSize

當屏幕尺寸信息發生改變(當編譯選項中的minSdkVersiontargeSdkVersion均低於13時不會導致Activity重啓)-API13新添加

smallestScreenSize

設備的物理屏幕尺寸發生改變,這個和屏幕方向沒關係,比如切換到外部顯示設備-API13新添加

layoutDirection

當佈局方向發生改變的時候,正常情況下無法修改佈局的layoutDirection的屬性-API17新添加

上表的值代表Activity會在相應的情況下被系統回收,在需要的時候再重啓,如果android:configChanges配置了以上的某個值,代表Activity在相應的情況下不會被系統回收內存,進而避免一些意外的錯誤出現(特別是一些需要在oncreate中初始化的信息,如果Activity重啓,則不會再次執行oncreate,導致在oncreate方法中初始化的信息丟失,進而導致應用報錯,一般會出現空指針異常)

問題:爲何Activity被回收重啓之後沒有執行onCreate()或onNewIntent()或onRestart()等方法,而是直接執行onStart()方法,這個還是不得而知,如有大神知道,還望指點

參考文章:http://blog.csdn.net/qq_33544860/article/details/54863895

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章