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 方法