Android横竖屏切换生命周期你真的了解么?

Activity生命周期简介

众所周知,在Android中Activity的生命周期是这样的:

onCreate() 
onStart() 
onResume() 
onPause()
onStop()
onDestory()

我们在网上所了解的横竖屏切换生命周期是这样的

  1. 不设置Activity的Android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次。
  2. 设置Activity的android:configChanges=”orientation”时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次。
  3. 设置Activity的android:configChanges=”orientation|keyboardHidden|screenSize”时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法。

实际测试是这样的

1. 不设置Activity的Android:configChanges时:

竖屏切横屏

onPause()
onStop()
onDestory()
onCreate() 
onStart() 
onResume() 

横屏切竖屏

onPause()
onStop()
onDestory()
onCreate() 
onStart() 
onResume() 

2. 设置Activity的android:configChanges=”orientation”时:

竖屏切横屏

onPause()
onStop()
onDestory()
onCreate() 
onStart() 
onResume() 

横屏切竖屏

onPause()
onStop()
onDestory()
onCreate() 
onStart() 
onResume() 

和不设置configChanges是一样的(前提是minSdkVersion 和 targetSdkVersion大于12,小于等于12时仅会调用onConfigurationChanged()方法)

3. 设置Activity的android:configChanges=”orientation|screenSize”时:

竖屏切横屏

onConfigurationChanged()

横屏切竖屏

onConfigurationChanged()

4. 设置Activity的android:configChanges=”orientation|screenSize|keyboardHidden”时:

竖屏切横屏

onConfigurationChanged()

横屏切竖屏

onConfigurationChanged()

结论:

如果Activity不设置configChanges属性,横竖屏切换时,各生命周期均会调用一次,如果设置Activity的android:configChanges=”orientation|screenSize”,横竖屏切换时,只会调用onConfigurationChanged()。

你可能感兴趣的:(Android横竖屏切换生命周期你真的了解么?)