生命周期 |青训营笔记

189 阅读2分钟

生命周期 |青训营笔记

这是我参与「第四届青训营 」笔记创作活动的的第4天

在开发安卓的过程中,考虑activity和fragment的生命周期是非常重要的,只要在掌握了两者的生命周期的过程,在合适的时计进行数据的绑定,创建,以及数据留存等。保证在crash后能够有效的恢复数据是相当重要的。

常用操作中activity的生命周期过程

  1. Activity正常启动:onCreate()->onStart()->onResume()
  2. 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的生命周期。