Fragment的生命周期

Android Fragment的生命周期与Activity的生命周期紧密相关,但Fragment的生命周期更加复杂,因为它依赖于宿主Activity的生命周期。Fragment的生命周期包括多个回调方法,这些方法在Fragment的不同阶段被调用。以下是Fragment生命周期的主要阶段和回调方法:

  1. onAttach(Context context):

    • 当Fragment与Activity建立关联时被调用。这是Fragment生命周期的第一个回调方法。
    • Fragment可以通过这个回调方法获取到宿主Activity的实例,但此时Fragment的视图还未创建。
  2. onCreate(Bundle savedInstanceState):

    • Fragment被创建时调用。
    • 在这里可以进行Fragment的初始化操作,如加载数据等。
    • 如果Fragment之前被保存过状态(例如,在屏幕旋转时),则可以通过savedInstanceState参数恢复状态。
  3. onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState):

    • 当Fragment需要创建其用户界面时调用。
    • 必须返回一个View对象,这个对象将成为Fragment的根视图。
    • 如果Fragment不需要用户界面,可以返回null。
  4. onActivityCreated(Bundle savedInstanceState):

    • 当宿主Activity的onCreate()方法返回后调用。
    • 此时,Fragment的Activity已经被创建,但Fragment的视图可能还未完全显示。
  5. onStart():

    • 当Fragment对用户可见时调用。
    • 此时,Fragment的视图已经准备好,但还未出现在前台,用户可能看不到它(例如,如果Fragment被另一个Fragment覆盖)。
  6. onResume():

    • 当Fragment开始与用户交互时调用。
    • 此时,Fragment的视图已经出现在前台,用户可以与之交互。
  7. onPause():

    • 当Fragment不再与用户交互时调用。
    • 这通常发生在另一个Activity或Fragment即将覆盖它时。
    • 在这个回调方法中,应该停止任何可能消耗CPU资源的操作,如动画或播放音频。
  8. onStop():

    • 当Fragment不再对用户可见时调用。
    • 此时,Fragment的视图已经不可见,可能是因为宿主Activity被另一个Activity覆盖或宿主Activity正在被销毁。
  9. onDestroyView():

    • 当Fragment的视图被销毁时调用。
    • 此时,Fragment的视图不再存在,但Fragment的实例仍然存在,并且仍然附加在Activity上。
    • 应该在这个方法中清理与视图相关的资源,如取消注册监听器等。
  10. onDestroy():

    • 当Fragment不再被使用时调用。
    • 此时,Fragment的实例即将被销毁,应该在这里清理所有资源,如取消网络请求、停止后台线程等。
  11. onDetach():

    • 当Fragment与Activity解除关联时被调用。
    • 这是Fragment生命周期的最后一个回调方法。
    • 在这里,Fragment的实例仍然存在,但不再与Activity有任何关联。

注意:Fragment的生命周期回调方法并不是严格按照上述顺序调用的,它们会根据Fragment的状态变化而被调用。例如,如果Fragment从未对用户可见(例如,在Activity的onCreate()方法中直接将其移除),则可能永远不会调用onStart()和onResume()方法。同样,如果Fragment被添加到回退栈中,并在用户离开Activity后仍然保留,则可能会调用onPause()、onStop()和onDestroyView(),但不会调用onDestroy()和onDetach(),直到用户从回退栈中移除Fragment或Activity被销毁。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值