Activity横竖屏切换, 生命周期变化

本文详细探讨了Android中Activity在不同屏幕方向切换时的生命周期变化,包括未配置、配置orientation及orientation|keyboardHidden情况下的具体行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Activity横竖屏切换生命周期变化


1. 新建一个Activity并把各个生命周期都打印(未配置该Activity 的android:configChanges)

2. 运行Activity, 得到如下打印信息

onCreate
onStart
onResume


3. 切换横屏时, 打印
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume


4. 再次切回竖屏时,打印
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume


总结1:Activity未设置android:configChanges时,切屏时会重新调用各个生命周期,且横屏时会调用一次,切竖屏时会调用两次;

5. 修改AndroidManifest.xml, 把该Activity添加android:configChanges="orientation", 然后重新运行,然后切换横屏,打印
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume


6. 切换竖屏,打印
onSaveInstanceState
onPause
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume
onConfigurationChanged


总结2:Activity设置android:configChanges="orientation", 切屏时会重新调用各个生命周期,且横、竖屏只会调用一次

7. 修改该Activity的android:configChanges="orientation|keyboardHidden", 然后重新运行,切换横屏时,打印
onConfigurationChanged

8. 切换竖屏时,打印
onConfigurationChanged
onConfigurationChanged

总结3:设置Activity 的android:configChanges="orientation|keyboardHidden", 切屏时不会重新调用各个生命周期,只会执行onConfigurationChanged方法











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值