Android 橫豎屏切換 導致崩潰
阿新 • • 發佈:2019-01-08
在不少應用中都會發生出現螢幕方向改變,但是在改變的時候又會發生什麼事情呢?
我們寫一個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。