屏幕旋转后Activity生命周期

主要针对屏幕旋转对 Activity 生命周期有何影响。

第一种情况

在没有其它配置的情况下,通过日志打印屏幕旋转会调用的方法。

//onPause()----onStop()-----onDestroy()-----onCreate() ---- onStart()---onResume()
复制代码

第二种情况

关于 android:configChanges 的配置,不同的值对生命周期也会有不同的影响。这个值最常用的值包括: orientationkeyboardHidden, 分别用于避免因屏幕方向和可用键盘改变而导致的重启。

例如:

<activity android:name=".MainActivity"
            android:configChanges="orientation|keyboardHidden" / >
复制代码

当其中一个配置发生变化时, MainActivity 不会重启。 但是会收到 onConfigurationChanged() 的调用。向此方法传递 Configuration 对象指定新设备配置。可以通过读取 Configuration 中的字段,确定新配置。然后通过更新界面中使用的资源进行适当的更改。调用此方法时,Activity 的 Resources 对象会相应的进行更新,以根据新配置返回资源,这样,就能够在系统不重启 Activity 的情况下轻松重置 UI 的元素。

但是,我的编译版本高一些,实验,发现当配置以上configChanges 还是会重启 Activity, 并且没有回调 onConfigurationChanged() 的回调

而后,开始查阅文档说明,发现:

注意: 在Android3.2(API 13)开始,当设备在纵向和横向之间切换时, “屏幕尺寸”也会发生改变,因此,在开发针对 API 13或者更高版本的应用时(当然我们现在基本都是4.0 以上),若要避免由于设备方向改变而导致运行时重启,则除了 "orientation" 值以外,还必须添加 "screenSize" 值, 也就是说,您必须声明:android:configChanges="orientation|screenSize".
复制代码

当添加新的配置 screenSize 之后,屏幕旋转回调如下:

// onConfigurationChanged invoked... 只会调用onConfigurationChanged() 方法,并没有重启
复制代码

最后就是一些资源的变更,如果有些图像应该在横向和纵向之间切换,就必须在 onConfigurationChanged() 期间将每个资源重新分配给每个元素。

文档地址:https://developer.android.com/guide/topics/resources/runtime-changes?hl=zh-cn

转载于:https://juejin.im/post/5c872310f265da2db71859d5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值