理解Activity生命周期
这张图实在太经典了,不能不先放出来镇场子。
Activity中方法总结
- onCreate Activity最初创建时被调用
- onStart Activity创建或后台回到前台时被调用
- onResume Activity创建、被覆盖、后台回到前台时被调用
- onRestart Activity从后台回到前台时被调用
- onPause Activity被覆盖、锁屏时被调用
- onStop 退出当前Activity或跳转其他activity时被调用
- onDestroy 退出当前Activity时被调用
值得注意的是这几个方法。
- onWindowFocusChanged Activity窗口获得或失去焦点时被调用。当Activity被创建时是在onResume之后被调用,当Activity被覆盖或者退居后台或者当前Activity退出时,它是在onPause之后被调用。 例如创建时首次呈现在用户面前;当前Activity被其他Activity覆盖;当前Activity转到其他Activity或按Home键回到主屏,自身退居后台;用户退出当前Activity。
- onSaveInstanceState Activity被系统杀死时被调用。例如:屏幕方向改变时,Activity被销毁再重建;当前Activity处于后台,系统资源紧张将其杀死。 另外,当跳转到其他Activity或者按Home键回到主屏时该方法也会被调用,系统是为了保存当前View组件的状态。在onPause之前被调用。
- onRestoreInstanceState Activity被系统杀死后再重建时被调用。例如:屏幕方向改变时,Activity被销毁再重建;当前Activity处于后台,系统资源紧张将其杀死,用户又启动该Activity。 这两种情况下onRestoreInstanceState都会被调用,在onStart之后。
下面是测试结果。
onPause:活动状态→非活动状态
onStop:可见状态→不可见状态
按下锁屏键:
onSaveInstanceState按下home键:
onPause
唤醒后:onResume
onSaveInstanceState按下back键:
onPause
onStop
onPause
onStop
onDestroy
增加dialog弹窗:无影响
旋转屏幕:先销毁后重建
onSaveInstanceState
onPause
onStop
onDestory
onCreate
onStart
onRestoreInstanceState
onResume
但可以通过在activity中增加android:configChanges="orientation",使其无影响。