面试:Android横竖屏切换Activity的生命周期

本文详细介绍了Android中Activity的生命周期变化过程,特别是在不同屏幕方向切换时的行为。通过对比设置了`android:configChanges`属性前后的生命周期回调差异,帮助开发者更好地理解Activity在不同场景下的行为。
摘要由CSDN通过智能技术生成

1、新建一个能打印生命周期的Activity并运行

onCreate:
onStart:
onResume:

2、切换横屏

onConfigurationChanged: //当Activity可能被销毁时回调,供app暂存数据
onPause: 
onSaveInstanceState: 
onStop: 
onDestroy: 
onCreate: 
onStart: 
onRestoreInstanceState: //Activity被销毁后重新运行时回调
onResume:

3、切换竖屏

onConfigurationChanged: 
onPause: 
onSaveInstanceState: 
onStop: 
onDestroy: 
onCreate: 
onStart: 
onRestoreInstanceState: 
onResume: 
//基于Android 7.0,并没有见到传说中的调用两遍

到这里是不是都没有什么问题?很正常

4、为Activity添加属性:android:configChanges="orientation|screenSize",切换横屏

onConfigurationChanged:

现在只有一行 onConfigurationChanged 了。

5、再切换竖屏

onConfigurationChanged:

总结:

  • 不设置 Activity 的 android:configChanges 时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行一次:pause - stop - destory - create - start - resume
  • 设置 Activity 的 android:configChanges="orientation|screenSize" 时,切屏不会重新调用各个生命周期,只会执行 onConfigurationChanged 方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值