本章介绍Activity的生命周期,包含其正常状态下的和非正常状态下,以及Activity回收收存储数据问题。
1、生命周期介绍
这是官方文档上的图片,可以看到Activity共有7个生命周期。
onCreate() :activity第一次被创建时调用。在这里你应该完成所有常见的静态设置工作——创建view、绑定list数据等等。 本方法传 入一个包含了该activity前一个状态的Bundle对象(如果之前已捕获了状态的话,详见后面的保存Activity状态)。
onStart():当Activity变得可见时调用
onResume():可以与用户交互时调用
onPause():不可交互时调用
onStop():当Activity变得不可见时调用
onDestroy():Activity被销毁前调用
onRestart():activity被停止后、又再次被启动之前调用。
注意:在判断生命周期时,若启动的新Activity为透明主题或者对话框主题时,旧Activity不会回调onStop(),仅执行onPause().
2、Activity回收时,数据保存与恢复方法
通过onSaveInstanceState()和onRestoreInstanceState()实现。
onSaveInstanceState() :当系统认为一个Activity可能会被回收时调用该方法。
onRestoreInstanceState():当被回收的Activity重新打开时会调用该方法。
另外,Activity的系统配置发生改变后,如果Activity被重新启动,那么系统会通过onSaveInstanceState()保存数据,并通过onRestoreInstanceState()恢复数据。eg.横竖屏切换。
补充:
系统配置发生改变后,若不想Activity重新创建,可以给Activity指定configChanges属性。这类常见于游戏和视频横竖屏切换等情况下。