android中的組件Activity在manifest.xml文件中可以指定參數(shù)android:ConfigChanges泊藕,用于捕獲手機狀態(tài)的改變。在Activity中添加了android:configChanges屬性罢吃,在當所指定屬性(Configuration Changes)發(fā)生改變時棒妨,通知程序調用onConfigurationChanged()函數(shù)露氮。
設置方法:將下列字段用“|”符號分隔開祖灰,例如:“l(fā)ocale|navigation|orientation”
“mcc“移動國家號碼,由三位數(shù)字組成畔规,每個國家都有自己獨立的MCC局扶,可以識別手機用戶所屬國家。
“mnc“移動網號,在一個國家或者地區(qū)中三妈,用于區(qū)分手機用戶的服務商畜埋。
“l(fā)ocale“所在地區(qū)發(fā)生變化。
“touchscreen“觸摸屏已經改變畴蒲。(這不應該常發(fā)生悠鞍。)
“keyboard“鍵盤模式發(fā)生變化,例如:用戶接入外部鍵盤輸入模燥。
“keyboardHidden“用戶打開手機硬件鍵盤
“navigation“導航型發(fā)生了變化咖祭。(這不應該常發(fā)生。)
“orientation“設備旋轉蔫骂,橫向顯示和豎向顯示模式切換么翰。
“fontScale“全局字體大小縮放發(fā)生改變
對android:configChanges屬性,一般認為有以下幾點:
1辽旋、不設置Activity的android:configChanges時浩嫌,切屏會重新調用各個生命周期,切橫屏時會執(zhí)行一次戴已,切豎屏時會執(zhí)行兩次
2、設置Activity的android:configChanges="orientation"時锅减,切屏還是會重新調用各個生命周期糖儡,切橫、豎屏時只會執(zhí)行一次
3怔匣、設置Activity的android:configChanges="orientation|keyboardHidden"時握联,切屏不會重新調用各個生命周期,只會執(zhí)行onConfigurationChanged方法
但是每瞒,自從Android 3.2(API 13)金闽,在設置Activity的android:configChanges="orientation|keyboardHidden"后,還是一樣會重新調用各個生命周期的剿骨。因為screen size也開始跟著設備的橫豎切換而改變代芜。所以,在AndroidManifest.xml里設置的MiniSdkVersion和 TargetSdkVersion屬性大于等于13的情況下浓利,如果你想阻止程序在運行時重新加載Activity挤庇,除了設置"orientation",你還必須設置"ScreenSize"贷掖。
解決方法:
AndroidManifest.xml中設置android:configChanges="orientation|screenSize“