1. 程式人生 > >Android 橫豎屏切換 導致崩潰

Android 橫豎屏切換 導致崩潰

在不少應用中都會發生出現螢幕方向改變,但是在改變的時候又會發生什麼事情呢?

我們寫一個app測試一下

我們在mainActivity中寫了android生命週期中幾個重要的階段onCreate,onResume,onStart,onDestory,onStop的方法

在其中都呼叫toast方法告訴我們這些階段有沒有觸發。

另外我們重寫onSaveInstanceState() 和 onRestoreInstanceState()

在他們裡面也一樣加上toast提示

這時候我們進入app,旋轉手機我們會發現依次出現了onStop,onSaveInstanceState,onDestroy,onCreate,onStart,onRestoreInstanceState,onResume

我們就可以明白,預設情況下改變方向app將會迴圈一次生命週期,在測試中這樣會比較容易導致app崩潰

為了避免這個情況,我們可以在manifest的activity中加入

android:configChanges="orientation|screenSize|keyboardHidden"

並且我們在mainActivity中加入

public void onConfigurationChanged(Configuration newConfig) {  
    // TODO Auto-generated method stub  
    super.onConfigurationChanged(newConfig);  
    if
(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); } }

這時候我們再改變手機方向,我們就會發祥,app並沒有迴圈生命週期,而是觸發了onConfigurationChanged的方法。
至於keyboardHidden的作用則是在旋轉手機方向後隱藏keyboard。