Android Activity 之橫豎屏的生命週期

1、剛進a頁面(豎屏
a-onCreat —— a-onStart —— a-onResume
 
2、a頁面豎屏變成橫屏(a-豎 b-橫)
a-onPause —— a-onSaveInstanceState —— a-onStop —— a-onDestory —— b-onCreat —— b-onStart —— a-onRestoreInstanceState —— b-onResume
 
3、a頁面由橫屏變爲豎屏(a-橫 b-豎)
a-onPause —— a-onSaveInstanceState —— a-onStop —— a-onDestory —— b-onCreat —— b-onStart —— a-onRestoreInstanceState —— b-onResume


 上面是正常情況下頁面橫豎屏的生命週期,在切換橫豎屏的時候頁面會先銷燬然後重新創建,但如果不想頁面銷燬再重建要怎樣做呢,我們可以在AndroidManifest.xml中配置activity的configChanges屬性(親測),這個時候切換橫豎屏的時候就不需要先銷燬再重建了

1、配置activity的configChanges屬性
      
         a:Andorid 3.2以前的SDK可以使用如下配置
               android:configChanges="orientation|keyboardHidden"

         b:而Adnroid 3.2以後的SDK必須添加一個screenSize屬性,具體如下
               android:configChanges="keyboardHidden|orientation|screenSize"
               或者
               android:configChanges="orientation|screenSize"

2、重寫onConfigurationChanged方法

  1. @Override
  2. public void onConfigurationChanged(Configuration newConfig) {
  3. super.onConfigurationChanged(newConfig);
  4. Log.i(TAG, "onConfigurationChanged called.");
  5. switch (newConfig.orientation) {
  6. case Configuration.ORIENTATION_PORTRAIT:
  7. Log.i(TAG, "onConfigurationChanged called.ORIENTATION_PORTRAIT ");
  8. break;
  9. case Configuration.ORIENTATION_LANDSCAPE:
  10. Log.i(TAG, "onConfigurationChanged called.ORIENTATION_LANDSCAPE " );
  11. break;
  12. }
  13. }

3、由橫屏切換成豎屏
日誌輸出
onConfigurationChanged called.
onConfigurationChanged called.ORIENTATION_PORTRAIT




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