Android8.0下切换横竖屏幕时Activity的生命周期。

一、前言

看了一些关于切换屏幕时Activity生命周期变化的博客,初步理解了切换屏幕时的变化过程(私以为,默认情况下之所以切换横竖屏时会重新加载活动,是为了更好的用户体验哈哈)。但是因API版本号以及收集型号的不一样,这个过程都会略有不同。——————>所以我现在比较新的8.0系统下测试一番。

二、测试环境

安卓版本:android 8.0—API26
手机型号:Nexus_5X
编译环境:Android Sdudio

三、默认情况下的手机旋转(不配置android:configChanges属性)

首先是竖屏启动:

这里写图片描述
可以看到,流程为:onCreate—–>onStart—–>onResume。这根安卓以前的API启动流程一致。

再切换为横屏:

这里写图片描述
从图中可以看出,重新调用了一次生命活动周期。onPause——-onSaveInstanceState——-onStop——-onDestroy——–onCreate——onStart——onRestoreInstanceState——onResume

最后切换回竖屏(重点)

很多资料上说,这个过程会加载两次生命周期,然而在API26下的情况并非如此

这里写图片描述

这里根切换为横屏时一毛一样!只加载了一次生命周期。

四、配置android:configChanges="orientation"时生命周期变化

注意:该配置应该写在AndroidMainifest.xml的< activity 里.。

这里写图片描述

同样的,竖屏下启动:

这里写图片描述
可以看到,流程为:onCreate—–>onStart—–>onResume。这根第三节的启动流程一致。

然后切换为横屏:

这里写图片描述
这儿并没有执行生命周期,只回调了onConfigurationChanged方法,这跟以前的API不一样,以前的是会重新加载一次活动的。

最后切换回竖屏

这里写图片描述
这儿也并没有执行生命周期,只回调了onConfigurationChanged方法。这跟以前的API不一样,以前的是会重新加载一次活动的。

五、配置android:configChanges="orientation|keyboardHidden"

这里写图片描述
执行完旋转再转回竖屏后,打印信息如上,这和第四节一致,旋转屏幕时不调用生命周期。

六、配置android:configChanges="orientation|keyboardHidden|screenSize"

这里写图片描述
执行完旋转再转回竖屏后,打印信息如上,这和第四节一致,旋转屏幕时不调用生命周期。

七、总结

在Android8.0环境下。当不设置android:configChanges属性时,旋转屏幕会进行一次生命周期循环(即重新加载一次Activity),而一旦配置了该属性后,旋转屏幕就只会调用onConfigurationChanged()方法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值