本篇博客需要Activity生命周期相关知识,如果不了解,参看这篇博客:Android下Activity的生命周期
情况一:Activity不配置configChanges属性,或者配置configChanges="orientation|keyboardHidden"或者configChanges=“orientation”
进入Activity之后调用:
当Activity由竖屏切换到横屏(横屏切换到竖屏与完全一致):
横竖屏切换时Activity调用onPause()——>onStop()——>onSaveInstanceState()——>onDestroy()——>onCreate()——>onStart()——>onRestoreInstanceState()——>onResume()
,即Acitivity在横竖屏切换过程中进行了一次重启,并通过onSaveInstance()和onRestoreInstanceState()进行数据保存和重载。
情况二:configChanges="orientation|screenSize|keyboardHidden"或者configChanges=“orientation|screenSize”
当Activity由竖屏切换到横屏(横屏切换到竖屏过程完全一致):
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210516224135184.png#pic_center
此时在切换横竖屏过程中Activity不会进行重启,但仍会正常切换横竖屏。
情况三:设置Activity的screenOrientation="portrait"或screenOrientation=“landscape”
![](https://img-blog.csdnimg.cn/20210517170102903.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNjEzMjgx,size_16,color_FFFFFF,t_70)
screenOrientation=“portrait”(强制竖屏)
![](https://img-blog.csdnimg.cn/20210517173508867.jpg)
在这种情况下,Activity将不会跟随系统横竖屏切换进行切换,而是会直接锁定竖屏或者横屏,相应的Activity自然也不会进行重启,另外设置了screenOrientation
属性后,无论config设置为哪一种,均会锁死横竖屏