android实现在横竖屏切换时页面信息不被重置的示例分享

2019-12-10 20:09:17王冬梅

onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume

 

第四步:
修改 AndroidManifest.xml 文件中的 Activity 元素,
添加 android:configChanges="orientation" ,
按 crtl + f12 切换成横屏时:(与上面无修改时相同)

复制代码
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume

 

第五步:
再按 crtl + f12 切换成竖屏时,
发现不会再打印相同信息,
但多打印了一行 onConfigChanged :

复制代码
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume
onConfigurationChanged

 

第六步:
修改 AndroidManifest.xml 文件中的 Activity 元素,

复制代码
android:configChanges="orientation"
改成
复制代码
android:configChanges="orientation|keyboardHidden"

 

按 crtl + f12 切换成横屏时,
就只打印 onConfigChanged :

复制代码
onConfigurationChanged

 

第七步:
按 crtl + f12 切换成竖屏时:

复制代码
onConfigurationChanged
onConfigurationChanged

 

二、总结:
1.不设置 AndroidManifest.xml 文件中的 Activity 元素的 android:configChanges 时,
切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次;

2.设置了 AndroidManifest.xml 文件中的 Activity 元素的
android:configChanges="orientation"时,
切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次;

3.设置了 AndroidManifest.xml 文件中的 Activity 元素的
android:configChanges="orientation|keyboardHidden"时,
切屏不会重新调用各个生命周期,只会执行 onConfigurationChanged 方法!