这个问题面试的时候有时候会被问到,现在给大家分析一下他切换时具体的生命周期是怎么样的:
正常运行一个Activity,生命周期:onCreate-->onStart-->onResume
1、默认情况下,切换成横屏时生命周期:
onSaveInstanceState-->
onPause-->
onStop-->
onDestroy-->
onCreate-->
onStart-->
onRestoreInstanceState-->
onResume-->
切换成竖屏时生命周期:
onSaveInstanceState-->
onPause-->
onStop-->
onDestroy-->
onCreate-->
onStart-->
onRestoreInstanceState-->
onResume-->
onSaveInstanceState-->
onPause-->
onStop-->
onDestroy-->
onCreate-->
onStart-->
onRestoreInstanceState-->
onResume-->
2、修改AndroidManifest.xml,Activity添加属性Android:configChanges:"orientation"
切换横屏时生命周期:
onSaveInstanceState-->
onPause-->
onStop-->
onDestroy-->
onCreate-->
onStart-->
onRestoreInstanceState-->
onResume-->
切换竖屏时生命周期:
onSaveInstanceState-->
onPause-->
onStop-->
onDestroy-->
onCreate-->
onStart-->
onRestoreInstanceState-->
onResume-->
onConfigurationChanged-->
3、把Activity属性Android:configChanges:"orientation"改成"orientation|keyboardHidden"
切换横屏时生命周期:
onConfigChanged
onConfigurationChanged-->
切换竖屏时生命周期:
onConfigurationChanged-->
onConfigurationChanged-->
总结:
1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法
本文详细解析了在不同配置下Android应用中Activity在横竖屏切换时的生命周期变化过程。包括默认情况、设置android:configChanges=orientation以及设置为orientation|keyboardHidden时的具体行为。

831

被折叠的 条评论
为什么被折叠?



