Fragment的生命周期

        Fragment具有与Activity很相似的生命周期,依存与Activity而存在的,因此Activity的生命周期会直接影响到Fragment的生命周期。

首先来看两张图,第一张是Fragment生命周期流程图

 第二张是Activity和Fragment生命周期对比流程图

        从第二张图可以看出,Activity中的生命周期方法,Fragment中都有,但是Fragment比Activity多几个方法。各生命周期方法的含义如下:

  • onAttach() :当Fragment与Activity发生关联时调用。
  • onCreate():创建Fragment时被回调。
  • onCreateView():每次创建、绘制该Fragment的View组件时回调该方法,Fragment将会显示该方法返回的View 组件。即:创建Fragment布局
  • onActivityCreated():当 Fragment 所在的Activity被启动完成后( onStart() 后)回调该方法。
  • onStart():启动 Fragment 时被回调,此时Fragment可见。
  • onResume():恢复 Fragment 时被回调,获取焦点时回调。
  • onPause():暂停 Fragment 时被回调,失去焦点时回调。
  • onStop():停止 Fragment 时被回调,Fragment不可见时回调。
  • onDestroyView():销毁与Fragment有关的视图,但未与Activity解除绑定。
  • onDestroy():销毁 Fragment 时被回调。
  • onDetach():与onAttach相对应,当Fragment与Activity关联被取消时调用。

6中操作情况下的生命周期的具体调用顺序

1)创建Fragment

onAttach() —> onCreate() —> onCreateView() —> onActivityCreated() —> onStart() —> onResume()

2)按下Home键回到桌面 / 锁屏

onPause() —> onStop()

3)从桌面回到Fragment / 解锁

onStart() —> onResume()

4)切换到其他Fragment

onPause() —> onStop() —> onDestroyView()

5)切换回本身的Fragment

onCreateView() —> onActivityCreated() —> onStart() —> onResume()

6) 按下Back键退出

onPause() —> onStop() —> onDestroyView() —> onDestroy() —> onDetach()

谷歌官方的一张图:

介绍一下前面没介绍过的方法:

  • onViewCreated():在Fragment布局被创建后调用
  • onViewStateRestored():当保存的所有状态都恢复到片段的视图层次结构中时调用。这可以用于根据保存的视图层次结构跟踪自身的状态(比如当前是否选中复选框小部件)进行初始化。这是在onActivityCreated(Bundle)之后和onStart()之前调用的。
  • onSaveInstanceState():调用此函数以要求 fragment 保存其当前动态状态,以便稍后可以在其流程的新实例中重新启动它。如果稍后需要创建片段的新实例,那么您放置在此包中的数据将在提供给onCreate(Bundle)、onCreateView(LayoutInflater、ViewGroup、Bundle)和onActivityCreated(Bundle)的 Bundle 中可用。这对应于 Activity 的 onSaveInstanceState(Bundle)。注意:这个方法可以在onDestroy()之前的任何时候调用。在很多情况下,一个片段可能会被撕下来(例如当它被放在后台堆栈上而没有UI显示时),但是它的状态将不会被保存,直到它所拥有的 Activity 实际上需要保存它的状态。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心脏dance

如果解决了您的疑惑,谢谢打赏呦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值