Android横竖屏切换生命周期的变化
在面试的时候,面试官可能会问到进行横竖屏切换时Activity生命周期的变化,今天恰好有空,就自己写了个Demo看看。
从竖屏切换为横屏的时候,Activity的生命周期变化如下:
![](https://img.haomeiwen.com/i6627418/f1748d2be874127c.png)
我们可以看到竖屏切换到横屏的时候Activity先被销毁了,然后开启重建。值得注意的是,在onPause之后,Activity调用了onSaveInstanceState方法,保存一些View层次结构的数据,如TextView的文本信息。然后在onStrat方法后调用了onRestoreInstanceState方法还原页面。
从横屏切换为竖屏的时候,Activity的生命周期变化如下:
![](https://img.haomeiwen.com/i6627418/908b10aac0ab7f37.png)
从横屏切换到竖屏生命周期的变化是一致的。
为Activity添加 android:configChanges="orientation" 后的生命周期变化如下:
![](https://img.haomeiwen.com/i6627418/795cd981a08c5ed5.png)
这里可以看到添加android:configChanges属性后,Activity在旋转屏幕的时候任然会销毁重建。这是为什么了,在查看了资料后,发现如果minSdkVersion和targetSdkVersion有一个大于13的话,为了防止屏幕旋转时重启,除了orientation,我们还要加上screenSize.如下图所示:
为Activity添加 android:configChanges="orientation|screenSize" 后的生命周期变化如下:
![](https://img.haomeiwen.com/i6627418/0a6d8ad47175f83a.png)
我们可以看到添加ScreenSize属性后Activity就不会销毁重建了
网友评论