1、刚进a页面(竖屏)
a-onCreat —— a-onStart —— a-onResume
2、a页面竖屏变成横屏(a-竖 b-横)
a-onPause —— a-onSaveInstanceState —— a-onStop —— a-onDestory —— b-onCreat —— b-onStart —— a-onRestoreInstanceState —— b-onResume
3、a页面由横屏变为竖屏(a-横 b-竖)
a-onPause —— a-onSaveInstanceState —— a-onStop —— a-onDestory —— b-onCreat —— b-onStart —— a-onRestoreInstanceState —— b-onResume
a-onPause —— a-onSaveInstanceState —— a-onStop —— a-onDestory —— b-onCreat —— b-onStart —— a-onRestoreInstanceState —— b-onResume
上面是正常情况下页面横竖屏的生命周期,在切换横竖屏的时候页面会先销毁然后重新创建,但如果不想页面销毁再重建要怎样做呢,我们可以在AndroidManifest.xml中配置activity的configChanges属性(亲测),这个时候切换横竖屏的时候就不需要先销毁再重建了
1、配置activity的configChanges属性
a:Andorid 3.2以前的SDK可以使用如下配置
android:configChanges="orientation|keyboardHidden"
b:而Adnroid 3.2以后的SDK必须添加一个screenSize属性,具体如下
android:configChanges="keyboardHidden|orientation|screenSize"
或者
android:configChanges="orientation|screenSize"
android:configChanges="keyboardHidden|orientation|screenSize"
或者
android:configChanges="orientation|screenSize"
2、重写onConfigurationChanged方法
@Overridepublic void onConfigurationChanged(Configuration newConfig) {super.onConfigurationChanged(newConfig);Log.i(TAG, "onConfigurationChanged called.");switch (newConfig.orientation) {case Configuration.ORIENTATION_PORTRAIT:Log.i(TAG, "onConfigurationChanged called.ORIENTATION_PORTRAIT ");break;case Configuration.ORIENTATION_LANDSCAPE:Log.i(TAG, "onConfigurationChanged called.ORIENTATION_LANDSCAPE " );break;}}
3、由横屏切换成竖屏
日志输出
onConfigurationChanged called.
onConfigurationChanged called.ORIENTATION_PORTRAIT
本文详细探讨了Android应用程序中Activity在横竖屏切换时的生命周期变化。从启动到暂停、停止、重新启动,深入理解每个状态转换的原因和处理策略,帮助开发者优化用户体验。
597

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



