Android中横竖屏切换

Android中横竖屏相关的两个因素有两个:configChanges和screenOrientation。
我们先来看看screenOrientation这个属性,这个属性是控制Activity在启动的时候的方向,其属性值有:

(1)portrait---控制Activity为竖屏显示
(2)landscape---控制Activity为横屏显示
(3)unspecified---系统默认显示
(4)user---用户当前的首选方向
(5)behind---与当前堆栈下面的Activity同向
(6)sensor---根据传感器定(常用)
(7)nosensor---忽略传感器,系统根据unspecified显示

接下来看看configChanges这个属性

(1)orientation:消除横竖屏的影响
(2)keyboardHidden:消除键盘的影响
(3)screenSize:消除屏幕大小的影响

(1)当我们不设置configChanges属性的时候,切屏会重新调用Activity的生命周期和onConfigurationChanged()方法
(2)我们只设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期和onConfigurationChanged()方法
(3)设置Activity的android:configChanges="orientation|screenSize"或android:configChanges="orientation|keyboardHidden|screenSize"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged()方法

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

当发生横竖屏切换的时候,它的onPause、onStop、onDestroy都会被调用,同时如果Activity是在异常情况下终止的,系统就会在onStop方法之前调用onSaveInstanceState来保存当前Activity的状态。
另外在屏幕方向切换的时候,会依次调用onCreate、onStart、onRestoreInstanceState,onResume方法,并可以在onRestoreInstanceState和onCrate中取出之前保存的数据并恢复。

注意: onSaveInstanceState只会在Activity被异常终止的情况下调用。

你可能感兴趣的:(Android中横竖屏切换)