Android横竖屏切换生命周期你真的了解么?
2018-09-05 本文已影响0人
夕阳骑士
Activity生命周期简介
众所周知,在Android中Activity的生命周期是这样的:
onCreate()
onStart()
onResume()
onPause()
onStop()
onDestory()
我们在网上所了解的横竖屏切换生命周期是这样的
- 不设置Activity的Android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次。
- 设置Activity的android:configChanges=”orientation”时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次。
- 设置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()。