一,在设备的旋转的时候,发生了什么?
设备旋转时候,当前的activity实例会被系统销毁,然后创建一个新的Activity实例。
接下来我们通过检测Activity的生命周期来观察下:
上面是我启动activity时依次发生的事件,接下来我旋转设备:
可以看到,旋转的时候,第一个activity被destroy掉,之后新的activity被创建。
二,理解设备配置与备选资源
旋转设备会改变设备配置。设备配置是用来描述设备当前状态的一系列特征。这些特征包括:屏幕的方向,屏幕的尺寸,屏幕密度(是一个固定的设备配置,无法在运行时发生改变),键盘类型,底座模式及语言。
只要在应用运行中设备配置发生了变化,安卓就会销毁当前activity,然后再新建一个activity.
三,为设备旋转后使用新布局
如图,在res文件夹下新建layout-land文件夹,在里面新建同名布局文件,那么,当设备转到水平的时候,新创建activity的时候,就会自动使用这个文件夹下的水平布局文件。
四,在设备旋转之前,如何保存当前的临时数据?
类似Web中的刷新,当我刷新后,当前页面的临时数据都被清掉了,比如我当前正在填写一个表单,里面选择了性别女,刷新下,又要重新填写。显然,设备旋转时产生了一个隐性的bug,那么,安卓中如何处理这种保存临时数据的问题呢?
我们可以通过重写onSaveInstanceState方法实现。
首先,在这个方法里面写入要保存的数据:
之后,我们在OnCreate方法里面重新载入数据: