Activity横竖屏切换生命周期变化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Activity横竖屏切换生命周期变化相关的知识,希望对你有一定的参考价值。

参考技术A

onCreate ,
创建activity时调用。设置在该方法中,还以Bundle中可以提出用于创建该 Activity 所需的信息。
onStart ,
activity变为在屏幕上对用户可见时,即获得焦点时,会调用。
onResume ,
activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用的)
onSaveInstanceState
onPause ,
activity被暂停或收回cpu和其他资源时调用,该方法用于保存活动状态的
onStop ,
activity被停止并转为不可见阶段及后续的生命周期事件时,即失去焦点时调用
onDestroy ,
activity被完全从系统内存中移除时调用,该方法被调用可能是因为有人直接调用 finish()方法 或者系统决定停止该活动以释放资源。
onRestoreInstanceState ,
android在横竖排切换时候,将主动销毁activity和重新创建一个新的activity出来,在此过程中,onRestoreInstanceState就要被回调
onConfigurationChanged ,
配置指定属性后,屏幕方向发生变化后回调此函数.

把该Activity添加
android:configChanges="orientation" ,
执行步骤3(切换成横屏时)

android:configChanges="orientation" 对于4.04.0以上版本不生效

把该Activity添加 android:configChanges="orientation|screenSize" ,
执行步骤3(切换成横屏时)

onConfigurationChanged-->
只打印onConfigChanged

把 android:configChanges="orientation|screenSize" 改成 android:configChanges="orientation|keyboardHidden|screenSize"
执行步骤3(切换横屏幕)
只打印
onConfigChanged

执行步骤4(切换竖屏幕)
只打印onConfigChanged
切记一定要加上后边的screenSize否则在4.0以上版本生命周期执行不生效。

当前Activity产生事件弹出Toast和AlertDialog的时候Activity的生命周期不会有改变
Activity运行时按下HOME键(跟被完全覆盖是一样的):
onPause --> onStop onRestart -->onStart--->onResume
Activity未被完全覆盖只是失去焦点:onPause--->onResume

测试用手机版本5.1.1
Android实现屏幕旋转方法

这种方法的优点:即使屏幕旋转,Activity也不会重新onCreate。
缺点:屏幕只有一个方向。

这个方法的优点:我们可以随时监听屏幕旋转变化,并对应做出相应的操作;
缺点:它只能一次旋转90度,如果一下子旋转180度,onConfigurationChanged函数不会被调用。
4.设置方向的其他方式
在AndroidManifest.xml设置
横向显示,但是基于设备传感器,既可以是按正常方向显示,也可以反向显示,在API Level 9中被引入。
android:screenOrientation="sensorLandscape"

纵向显示,但是基于设备传感器,既可以是按正常方向显示,也可以反向显示,在API Level 9中被引入。
android:screenOrientation="sensorLandscape"

demo

横竖屏切换Activity的生命周期

 (1)为了防止横竖屏切换 生命周期会发生变化 所以把Activity配置如下 
  android:screenOrientation="portrait"
 
 (2)为了生命周期不变化 

 android:configChanges="orientation|keyboardHidden|screenSize" 

以上是关于Activity横竖屏切换生命周期变化的主要内容,如果未能解决你的问题,请参考以下文章

Activity 在横竖屏切换情况下的生命周期变化

横竖屏切换时activity生命周期变化的总结

横竖屏切换时activity生命周期变化的总结

横竖屏切换Activity的生命周期

切换横竖屏的时候Activity的生命周期变化情况

Fragment和Activity生命周期以及横竖屏切换对生命周期的影响