android中的組件Activity在manifest.xml文件中可以指定參數(shù)android:ConfigChanges,用于捕獲手機(jī)狀態(tài)的改變默终。在Activity中添加了android:configChanges屬性缭嫡,在當(dāng)所指定屬性(Configuration Changes)發(fā)生改變時(shí)掌动,通知程序調(diào)用onConfigurationChanged()函數(shù)。設(shè)置方法:將下列字段用“|”符號(hào)分隔開(kāi),例如:“l(fā)ocale|navigation|orientation”
- “mcc“ 移動(dòng)國(guó)家號(hào)碼厨疙,由三位數(shù)字組成,每個(gè)國(guó)家都有自己獨(dú)立的MCC疑务,可以識(shí)別手機(jī)用戶(hù)所屬?lài)?guó)家沾凄。
- “mnc“ 移動(dòng)網(wǎng)號(hào),在一個(gè)國(guó)家或者地區(qū)中暑始,用于區(qū)分手機(jī)用戶(hù)的服務(wù)商搭独。
- “l(fā)ocale“ 所在地區(qū)發(fā)生變化婴削±染担“touchscreen“ 觸摸屏已經(jīng)改變。(這不應(yīng)該常發(fā)生唉俗。)
- “keyboard“ 鍵盤(pán)模式發(fā)生變化嗤朴,例如:用戶(hù)接入外部鍵盤(pán)輸入。
- “keyboardHidden“ 用戶(hù)打開(kāi)手機(jī)硬件鍵盤(pán)
- “navigation“ 導(dǎo)航型發(fā)生了變化虫溜。(這不應(yīng)該常發(fā)生雹姊。)
- “orientation“ 設(shè)備旋轉(zhuǎn),橫向顯示和豎向顯示模式切換衡楞。
- “fontScale“ 全局字體大小縮放發(fā)生改變
對(duì)Android:configChanges屬性吱雏,一般認(rèn)為有以下幾點(diǎn):
- 不設(shè)置Activity的[android]:configChanges時(shí),切屏?xí)匦抡{(diào)用各個(gè)生命周期,切橫屏?xí)r會(huì)執(zhí)行一次歧杏,切豎屏?xí)r會(huì)執(zhí)行兩次
- 設(shè)置Activity的android:configChanges="orientation"時(shí)镰惦,切屏還是會(huì)重新調(diào)用各個(gè)生命周期,切橫犬绒、豎屏?xí)r只會(huì)執(zhí)行一次
- 設(shè)置Activity的android:configChanges="orientation|keyboardHidden"時(shí)旺入,切屏不會(huì)重新調(diào)用各個(gè)生命周期,只會(huì)執(zhí)行onConfigurationChanged方法
但是凯力,自從Android 3.2(API 13)茵瘾,在設(shè)置Activity的android:configChanges="orientation|keyboardHidden"后,還是一樣會(huì)重新調(diào)用各個(gè)生命周期的咐鹤。因?yàn)閟creen size也開(kāi)始跟著設(shè)備的橫豎切換而改變拗秘。所以,在AndroidManifest.xml里設(shè)置的MiniSdkVersion和 TargetSdkVersion屬性大于等于13的情況下祈惶,如果你想阻止程序在運(yùn)行時(shí)重新加載Activity聘殖,除了設(shè)置"orientation",你還必須設(shè)置"ScreenSize"行瑞。解決方法:AndroidManifest.xml中設(shè)置android:configChanges="orientation|screenSize“