當發生 鍵盤打開 或 橫豎屏切換 等配置改變的情況時,Activity就會被銷燬了並且被重啓,如果沒有留意這個問題,就會出現activity執行多次onCreate()
方法的情況。在實際開發中就遇到了調用系統相機拍照後,activity被destory的情況,排查後發現是因爲應用本身爲豎屏,系統相機被啓動時會神奇的發生一個90度旋轉變成橫屏(我明明豎直拿的手機不知道爲什麼也要轉),然後又轉回來了變成豎屏狀態 ( ﹁ ﹁ ),Activity就這樣被destory了,我也真是無語。
要解決這個問題首先在Mainifest.xml
的Activity元素中加入configChanges
屬性:
<activity android:name=".MainActivity"
android:configChanges="orientation|screenSize|keyboardHidden">
...
</activity>
加入這條屬性,我們就可以重寫配置改動時執行的操作,否則Android系統將自動處理(destory當前Activity然後執行onCreate()
方法)。
當然我們接下來就要在對應的Activity中重寫處理配置改動的方法。注意:onConfigurationChanged()
方法只會監測應用程序在AnroidMainifest.xml中通過configChanges
配置的類型的改動,而對於未配置類型則系統會onDestroy()當前Activity,然後重啓一個新的Activity實例。
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// 檢測配置改動後執行相關操作
}
。