Fragment生命周期

要创建一个Fragment,必须创建一个Fragment的子类(或其现有的子类)。 Fragment类的代码看起来很像Activity。 它包含类似于活动的回调方法,如onCreate(),onStart(),onPause()和onStop()。 事实上,如果要将现有的Android应用程序转换成使用Fragment,可以将代码从Activity的回调方法移至Fragment的相应回调方法中。 至少了解的Fragment生命周期如下图(图片来自android官方文档)

说明 流程图
onAttach(Activity) called once the fragment is associated with its activity.
onCreate(Bundle) Fragment的初始化创建
onCreateView(LayoutInflater, ViewGroup, Bundle) 创建并返回与
Fragment关联的视图层次结构
onActivityCreated(Bundle) 告诉Fragment它所在的Activity已经成功创建
onStart() 使Fragment对用户可见(基于其包含的Activity正在启动)
onResume() 使片段开始与用户交互(基于其包含的Activty正在恢复)
onPause() fragment 不再与用户交互,因为其活动正在暂停或
Fragment操作正在修改它所在的Activity。
onStop(): Fragment对用户不再可见,要么是因为其Activity正在停止
,要么是Fragment操作正在修改它所在的Activity。
onDestroyView():Fragment清理与其View相关的资源。
onDestroy()最后清理片段所有状态
onDetach(): fragment解除与它所在Activity的关联
这图片描述


onViewStateRestored(Bundle)告诉Fragment所有保存的视图层次结构状态已被恢复。

实际上,还有两个Fragment生命周期常常调用的方法,是onViewStateRestored()和onSaveInstanceState(),它们分别收集Fragment的数据和可以取出储存的数据,onViewStateRestored的作用与Activity的onRestoreInstanceState()效果一致,Fragment所有保存的视图层次结构状态已被恢复。而onSaveInstanceState()对应Activity的onSaveInstanceState()方法,表示保存其当前的动态状态,以便稍后可以在重新启动其进程的新实例时重新构建它。而onSaveInstanceState()此方法可能在onDestroy()之前的任何时候被调用,所以更加完整的生命周期,往往是如下图:

对于onSaveInstanceState(Bundle)储存的状态,如果以后需要创建片段的新实例,则放置在Bundle中的数据将在提供给onCreate(Bundle),onCreateView(LayoutInflater,ViewGroup,Bundle),onActivityCreated(Bundle),onViewStateRestored(Bundle savedInstanceState)的Bundle中可用,需要注意的是savedInstanceState可能为空。

猜你喜欢

转载自blog.csdn.net/htwhtw123/article/details/80040579