android中的組件Activity在manifest.xml文件中可以指定參數(shù)android:ConfigChanges,用于捕獲手機(jī)狀態(tài)的改變。在Activity中添加了android:configChanges屬性,在當(dāng)所指定屬性(Configuration Changes)發(fā)生改變時(shí),通知程序調(diào)用onConfigurationChanged()函數(shù)。
設(shè)置方法:將下列字段用“|”符號分隔開,例如:“l(fā)ocale|navigation|orientation”
“mcc“移動國家號碼,由三位數(shù)字組成,每個國家都有自己獨(dú)立的MCC,可以識別手機(jī)用戶所屬國家。
“mnc“移動網(wǎng)號,在一個國家或者地區(qū)中,用于區(qū)分手機(jī)用戶的服務(wù)商。
“l(fā)ocale“所在地區(qū)發(fā)生變化。
“touchscreen“觸摸屏已經(jīng)改變。(這不應(yīng)該常發(fā)生。)
“keyboard“鍵盤模式發(fā)生變化,例如:用戶接入外部鍵盤輸入。
“keyboardHidden“用戶打開手機(jī)硬件鍵盤
“navigation“導(dǎo)航型發(fā)生了變化。(這不應(yīng)該常發(fā)生。)
“orientation“設(shè)備旋轉(zhuǎn),橫向顯示和豎向顯示模式切換。
“fontScale“全局字體大小縮放發(fā)生改變
對android:configChanges屬性,一般認(rèn)為有以下幾點(diǎn):
1、不設(shè)置Activity的android:configChanges時(shí),切屏?xí)匦抡{(diào)用各個生命周期,切橫屏?xí)r會執(zhí)行一次,切豎屏?xí)r會執(zhí)行兩次
2、設(shè)置Activity的android:configChanges="orientation"時(shí),切屏還是會重新調(diào)用各個生命周期,切橫、豎屏?xí)r只會執(zhí)行一次
3、設(shè)置Activity的android:configChanges="orientation|keyboardHidden"時(shí),切屏不會重新調(diào)用各個生命周期,只會執(zhí)行onConfigurationChanged方法
但是,自從Android 3.2(API 13),在設(shè)置Activity的android:configChanges="orientation|keyboardHidden"后,還是一樣會重新調(diào)用各個生命周期的。因?yàn)閟creen size也開始跟著設(shè)備的橫豎切換而改變。所以,在AndroidManifest.xml里設(shè)置的MiniSdkVersion和 TargetSdkVersion屬性大于等于13的情況下,如果你想阻止程序在運(yùn)行時(shí)重新加載Activity,除了設(shè)置"orientation",你還必須設(shè)置"ScreenSize"。
解決方法:
AndroidManifest.xml中設(shè)置android:configChanges="orientation|screenSize“