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

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 方法
上一篇:Kotlin开发第二天,探究Activity


下一篇:Android窗口管理,手持4个大厂offer的我