我问你答-简述 Fragment 生命周期

Fragment 生命周期.jpg

如上图所示,中间部分从上到下为 Fragment 这个生命周期的方法调用。左边对比参照的是 Activity 的生命周期,右边对比参照的是 Fragment 中 View 的生命周期(或者叫有效范围)

  • onAttach(Context context)
    通常情况下,Fragment 会依附于 Activity 使用,在 Fragment 中难免会用到 Activity 或者 Context 实例,可以通过该方法保存 context,其实就是所依附的 Activity,因为这步就是指 Fragment 被绑定在 Activity 上。或者也可以使用 getActivity() 或 getContext()。
  • onCreate(Bundle bundle)
    类似于 Activity 的同名方法,可用来做一些初始化操作,也可以在这里接收传递给 Fragment 的参数(即调用 getArguments() 方法)
  • onCreateView(LaoutInflater inflater, ViewGroup container, Bundle bundle)
    在这步进行 View 相关的初始化,该方法会返回相关的 View 实例。
  • onActivityCreated(Bundle bundle)
    这步表明所依附的 Activity 执行完 onCreate() 方法了,一般不太会用到,除非有特殊要求需要在这个节点或者之后去操作。
  • onStart()
    类似于 Activity 的同名方法,注意这里会在 Activity 的 onStart() 之后调用。
  • onResume()
    类似于 Activity 的同名方法,注意这里会在 Activity 的 onResume() 之后调用。
  • onPause()
    类似于 Activity 的同名方法,注意这里会先于 Activity 的 onPause() 调用。
  • onStop()
    类似于 Activity 的同名方法,注意这里会先于 Activity 的 onStop() 调用。
  • onDestroyView()
    在这步 View 会进行销毁,这个节点及之后就不能再引用 View 相关的对象了。
  • onDestroy()
    类似于 Activity 的同名方法,表示 Fragment 的销毁。
  • onDettach()
    这步是 Fragment 与 Activity 解绑操作,建议在这步将之前保存的 context 引用置空。

另外关于 Fragment 的状态保存方法有:

  • onViewStateRestored(Bundle bundle)
  • onSaveInstanceState()

这两个的用法和 Activity 的状态保存类似。要注意的是 onSaveInstanceState() 方法在 API 28 之前会在 onStop() 之前触发,在 API 28 及之后会在 onStop() 之后触发。

你可能感兴趣的:(我问你答-简述 Fragment 生命周期)