橫豎屏切換時(shí)候Activity的生命周期

2018-07-04 10:22 更新

總結(jié):

  1. 不設(shè)置 Activity 的 android:configChanges 時(shí), 切屏?xí)匦抡{(diào)用各個(gè)生命周期, 切橫屏?xí)r會(huì)執(zhí)行一次, 切豎屏?xí)r會(huì)執(zhí)行兩次.
  2. 設(shè)置 Activity 的 android:configChanges="orientation" 時(shí), 切屏還是會(huì)重新調(diào)用各個(gè)生命周期, 切橫\/豎屏?xí)r只會(huì)執(zhí)行一次.
  3. 設(shè)置 Activity 的 android:configChanges="orientation|keyboardHidden" 時(shí), 切屏不會(huì)重新調(diào)用各個(gè)生命周期, 只會(huì)執(zhí)行onConfigurationChanged方法
Activity 會(huì)自己管理配置的變化. 當(dāng)運(yùn)行的時(shí)候, 配置變了, 它會(huì)自己關(guān)閉并重新啟動(dòng), 但是如果設(shè)置了 android:configChanges="某一個(gè)配置", 它就不會(huì)在這個(gè)配置發(fā)生改變時(shí)重新啟動(dòng).

具體過程

  1. 新建一個(gè)Activity,并把各個(gè)生命周期打印出來
  2. 運(yùn)行Activity,得到如下信息onCreate-->onStart-->onResume-->
  3. 切換成橫屏?xí)ronSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->
  4. 再切換成豎屏?xí)r,發(fā)現(xiàn)打印了兩次相同的logonSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->onSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume
  5. 修改AndroidManifest.xml, 把該 Activity 添加 android:configChanges="orientation"onSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->
  6. 再執(zhí)行步驟4, 發(fā)現(xiàn)不會(huì)再打印相同信息, 但多打印了一行 onConfigChangedonSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->onRestoreInstanceState-->onResume-->onConfigurationChanged-->
  7. 把步驟5的 android:configChanges="orientation" 改成 android:configChanges="orientation|keyboardHidden",執(zhí)行步驟3, 就只打印onConfigChangedonConfigurationChanged-->
  8. 執(zhí)行步驟4onConfigurationChanged-->onConfigurationChanged-->
只豎屏顯示 android:screenOrientation="portrait"只橫屏顯示 android:screenOrientation="landscape"


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)