原文地址:http://blog.csdn.net/zhaokaiqiang1992/article/details/19921703
?
android中的組件Activity在manifest.xml文件中可以指定參數android:ConfigChanges,用于捕獲手機狀態的改變。 在Activity中添加了android:configChanges屬性,在當所指定屬性(Configuration Changes)發生改變時,通知程序調用onConfigurationChanged()函數。
設置方法:將下列字段用“|”符號分隔開,例如:“locale|navigation|orientation”?
?
“mcc“ 移動國家號碼,由三位數字組成,每個國家都有自己獨立的MCC,可以識別手機用戶所屬國家。
“mnc“ 移動網號,在一個國家或者地區中,用于區分手機用戶的服務商。
“locale“ 所在地區發生變化。
“touchscreen“ 觸摸屏已經改變。(這不應該常發生。)
“keyboard“ 鍵盤模式發生變化,例如:用戶接入外部鍵盤輸入。
“keyboardHidden“ 用戶打開手機硬件鍵盤
“navigation“ 導航型發生了變化。(這不應該常發生。)
“orientation“ 設備旋轉,橫向顯示和豎向顯示模式切換。
“fontScale“ 全局字體大小縮放發生改變
對android:configChanges屬性,一般認為有以下幾點:
1、不設置Activity的android:configChanges時,切屏會重新調用各個生命周期,切橫屏時會執行一次,切豎屏時會執行兩次
2、設置Activity的android:configChanges="orientation"時,切屏還是會重新調用各個生命周期,切橫、豎屏時只會執行一次
3、設置Activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新調用各個生命周期,只會執行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“