其他分享
首页 > 其他分享> > Android Activity横竖屏切换生命周期详解

Android Activity横竖屏切换生命周期详解

作者:互联网

关于Activity生命周期和横竖屏切换时,生命周期的执行过程,网上有很多文章。但是都写的很模糊,并且不完善。一般的我们去切换屏幕方向都是不希望Activity被重新创建,这时就需要对一些属性进行设置,或者使用代码设置。文章通过以上方面解析Activity在横竖屏切换时,生命周期方法执行过程。

onCreate -->onStart–>onResumeo -->nPause -->onStop -->onDestroy

1.orientation 屏幕在纵向和横向间旋转
2.keyboardHidden 键盘显示或隐藏
3.screenSize 屏幕大小改变了
4.fontScale 用户变更了首选的字体大小
5.locale 用户选择了不同的语言设定
6.keyboard 键盘类型变更,例如手机从12键盘切换到全键盘
7.touchscreen或navigation 键盘或导航方式变化,一般不会发生这样的事件
常用的包括:orientation keyboardHidden screenSize,设置这三项界面不会走Activity的生命周期,只会回调onConfigurationChanged方法。

1.unspecified 默认值,由系统判断状态自动切换
2.landscape 横屏
3. portrait 竖屏
4.user 用户当前设置的orientation值
5. behind 下一个要显示的Activity的orientation值
6. sensor 使用传感器 传感器的方向
7. nosensor 不使用传感器 基本等同于unspecified 仅landscape和portrait常用,代表界面默认是横屏或者竖屏,还可以再代码中更改。

1.AndroidManifest没有设置configChanges属性

  • 竖屏启动: onCreate -->onStart–>onResume
  • 切换横屏: onPause -->onSaveInstanceState -->onStop -->onDestroy -->onCreate–>onStart --> onRestoreInstanceState–>onResume -->onPause -->onStop -->onDestroy
  • 横屏启动: onCreate -->onStart–>onResume
  • 切换竖屏: onPause -->onSaveInstanceState -->onStop -->onDestroy -->onCreate–>onStart --> onRestoreInstanceState–>onResume -->onPause -->onStop -->onDestroy

2.AndroidManifest设置了configChanges android:configChanges=“orientation”

  • 竖屏启动: onCreate -->onStart–>onResume
  • 切换横屏: onPause -->onSaveInstanceState -->onStop -->onDestroy -->onCreate–>onStart --> onRestoreInstanceState–>onResume -->onPause -->onStop -->onDestroy
  • 横屏启动: onCreate -->onStart–>onResume
  • 切换竖屏: onPause -->onSaveInstanceState -->onStop -->onDestroy -->onCreate–>onStart --> onRestoreInstanceState–> onResume -->onPause -->onStop -->onDestroy

3.AndroidManifest设置了configChanges android:configChanges=“orientation|keyboardHidden|screenSize”

  • 竖(横)屏启动:onCreate -->onStart–>onResume
  • 切换横(竖)屏:onConfigurationChanged (Android 6.0 Android 7.0 Android 8.0)

4.AndroidManifest设置了configChanges android:configChanges=“orientation|screenSize”

  • 竖(横)屏启动:onCreate -->onStart–>onResume
  • 切换横(竖)屏:onConfigurationChanged (Android 6.0 Android 7.0 Android 8.0)

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

Jaynm 发布了11 篇原创文章 · 获赞 30 · 访问量 9万+ 私信 关注

标签:onResume,orientation,onStart,详解,configChanges,Activity,Android,onCreate
来源: https://blog.csdn.net/jaynm/article/details/104560439