Android横竖屏切换生命周期你真的了解么?
16lz
2021-01-23
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()。
更多相关文章
- android中实现view的更新UI有两组方法的问题
- Could not find SDK_Root\tools\adb.exe 的解决方法
- Android高手进阶教程(八)-------Android中两种设置全屏的方法!!!
- Android Studio导入.so库文件方法
- (转)Android 应用程序退出后不在运行列表中显示的方法
- Android Gallery控件使用方法详解
- Android 设置横屏竖屏的方法
- Android Activity生命周期的理解