生命周期 |青训营笔记
这是我参与「第四届青训营 」笔记创作活动的的第4天
在开发安卓的过程中,考虑activity和fragment的生命周期是非常重要的,只要在掌握了两者的生命周期的过程,在合适的时计进行数据的绑定,创建,以及数据留存等。保证在crash后能够有效的恢复数据是相当重要的。
常用操作中activity的生命周期过程
- Activity正常启动:onCreate()->onStart()->onResume()
- Acivity正常退出:onPause()->onStop()->onDestory()
3.Activity A 启动另一个Activity B(A还未被Destroy),
A的流程: onPause()->onStop()
再返回时,A的流程:onRestart()->onStart()->onResume()
4. Activity按Back 退出: onPause()->onStop()->onDestory()
再进入:onCreate()->onStart()->onResume()
5. Activity按Home 退出: onPause()->onStop()
再进入:onRestart()->onStart()->onResume()
6. 在当前Activity前显示系统的提示框or自定义提示信息(该提示信息显示时原来的Acitity可见),再Back返回:
onPause()->onResume()
Activity有如下特点:
-
在OnCreate创建,在OnDestroy销毁;
-
在onStart()之后可见,onStop之后不可见;
-
在OnResume之后获得焦点,在OnPause之后失去焦点。
-
在不可见时,如果系统资源紧张,会自动将Activity Destroy,再次拉起Activity时,需要重建则走OnCreate,否则走OnRestart ->OnStart。
-
因此,在开发中可以将一些必要资源释放放在onDestory中进行,而只需要在重建时更新设置的处理放在OnCreate中进行,需要每次切换页面显示时更新的处理放在OnResume,当然要注意他们之间的配合,不然会出错哦。
Fragment拥有自己的生命周期,但它们的生命周期直接被其所属的Activity的生命周期控制。
Fragment必须是依存与Activity而存在的,因此Activity的生命周期会直接影响到Fragment的生命周期。Fragment状态与Activity类似,也存在如下4种状态:
- 运行: 当前Fmgment位于前台,用户可见,可以获得焦点。
- 暂停: 其他Activity位于前台,该Fragment依然可见,只是不能获得焦点。
- 停止: 该Fragment不可见,失去焦点。
- 销毁: 该Fragment被完全删除,或该Fragment所在的Activity被结束。
Fragment具有与Activity很相似的生命周期,依存与Activity而存在的,因此Activity的生命周期会直接影响到Fragment的生命周期。