一些特殊情况下的生命周期分析

横竖屏切换与Activity生命周期
本文详细介绍了Android中Activity的横竖屏切换原理及生命周期变化。针对不同配置的android:configChanges属性值,解析了Activity在横竖屏切换过程中的生命周期函数调用流程,并提供了避免重启Activity的方法。

Activity 的横竖屏切换
与横竖屏生命周期函数有关调用的属性是"android:configChanges",关于它的属性值设置
影响如下:
 orientation:消除横竖屏的影响
 keyboardHidden:消除键盘的影响
 screenSize:消除屏幕大小的影响
当我们设置 Activity 的 android:configChanges 属性为 orientation 或者
orientation|keyboardHidden 或者不设置这个属性的时候,它的生命周期会走如下流
程:
1. 刚刚启动 Activity 的时候:
2. onCreate
3. onStart
4. onResume
5. 由竖屏切换到横屏:
6. onPause
7. onSaveInstanceState //这里可以用来横竖屏切换的保存数据
8. onStop
9. onDestroy
10. onCreate
11. onStart
12. onRestoreInstanceState//这里可以用来横竖屏切换的恢复数据
13. onResume
14. 横屏切换到竖屏:
15. onPause
16. onSaveInstanceState
17. onStop
18. onDestroy
19. onCreate
20. onStart
21. onRestoreInstanceState
22. onResume
当我们设置 Activity 的 android:configChanges 属性为 orientation|screenSize 或者
orientation|screenSize|keyboardHidden
1. 刚刚启动 Activity 的时候:
2. onCreate
3. onStart
4. onResume
5. 由竖屏切换到横屏:
6.
7. 什么也没有调用
8. 横屏切换到竖屏:
9. 什么也没有调用
而且需要注意一点的是设置了 orientation|screenSize 属性之后,在进行横竖屏切换的时
候调用的方法是 onConfigurationChanged(),而不会回调 Activity 的各个生命周期函
数;
当然在显示中我们可以屏蔽掉横竖屏的切换操作,这样就不会出现切换的过程中 Activity
生命周期重新加载的情况了,具体做法是,在 Activity 中加入如下语句:
1. android:screenOrientation="portrait" 始终以竖屏显示
2. android:screenOrientation="landscape" 始终以横屏显示
如果不想设置整个软件屏蔽横竖屏切换,只想设置屏蔽某个 Activity 的横竖屏切换功能的
话,只需要下面操作:
1. Activity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRA
IT);以竖屏显示
2. Activity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSC
APE);以横屏显示
最后提一点,当你横竖屏切换的时候,如果走了销毁 Activity 的流程,那么需要保存当前和
恢复当前 Activity 的状态的话,我们可以灵活运用 onSaveInstanceState()方法和
onRestoreInstanceState()方法
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大富大贵7

很高兴能够帮助到你 感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值