android 屏幕旋转生命周期和setRequestedOrientation强制旋转

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 屏幕旋转生命周期和setRequestedOrientation强制旋转相关的知识,希望对你有一定的参考价值。

参考技术A

屏幕会根据当前传感器进行自动旋转,旋转之后,activity屏幕的 生命周期不会发生变化 ,在activity中只会回调onConfigurationChanged方法

可见每次旋转onDestory()方法都会被调用,如果要保存一些activity被销毁前的数据的可以在onSaveInstanceState()方法中通过Bundle去保存

当我们调用了:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
或者
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
之后屏幕不会再自动旋转回来的情况

关于这点:我在b站App端也发现相关问题,点进b站的播放视频界面,我们手机开启屏幕自动旋转,当我们横竖屏旋转的时候是可以正常横竖屏切换的,但是我们点击视频右下角的放大(就是横屏)之后,自动旋转就失效了,要竖屏的话需要再点击一次

关于这个问题,就是我们说的setRequestedOrientation之后重力传感失效的问题,处理的方法也很简单
androidManifest.xml中设置了android:configChanges="orientation|keyboardHidden|screenSize的基础上,在onConfigurationChanged中调用 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR) 方法,使其恢复重力传感即可

以上是关于android 屏幕旋转生命周期和setRequestedOrientation强制旋转的主要内容,如果未能解决你的问题,请参考以下文章

android fragment 生命周期

android 旋转屏幕导致Activity重建解决方法

Android旋转屏幕时阻止activity重建

Activity屏幕旋转时被销毁

Android11.4 Fragment及其生命周期

jetpack之ViewModel