我问你答-简述 Fragment 生命周期
2021-01-07 本文已影响0人
jkwen
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() 之后触发。