Activity 屏幕旋轉引起的銷燬與重啓

當發生 鍵盤打開 或 橫豎屏切換 等配置改變的情況時,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);
    // 檢測配置改動後執行相關操作
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章