Fragment生命周期
Android3.0引入一个新的核心类Fragment
声明周期
- onInflate()回调
如果碎片是由正在扩充的布局内的<Fragment>标记定义的(通常是在activity调用setContentView()来设置主要布局),碎片将调用自己的onInflate()回调。这过程传入一个AttributeSet(包含来自<fragment>标记的特性)和一个保存的包。如果重新创建碎片,并且之前在onSaveInstanceState()中保存了某种状态,此包将包含保存的状态值。onInflate()会保存他们提供以后使用。在碎片生命的这一阶段,实际对用户界面执行任何操作都为时尚早,它并未与a关联。
2.onAttach()回调
在碎片与其activity关联以后调用。如果需要使用activity引用,在这里可以得到它。这里可以有两个操作:(1)确定即将结束的活动信息。(2)作为其他操作的上下文。 需要注意一点,fragment类有个getActivity()方法,它在需要时返回所附加到的活动,在整个生命周期中,初始化数据包从碎片的getArguments()方法中活得,但是一旦将碎片附加到activity后,将无法再次调用setArguments()。
3.onCreate()回调
它类似于activity的onCreate(),但需要注意的是不能将依赖activity的层次视图代码放在这里。这个阶段虽然可能与其activity关联,但是未活得activity的onCreate()已完成的通知。此回调获取传入的包,同事它会尽可能早的创建一个后台线程来获取此碎片将需要的数据。碎片代码在Ui线程上运行。
4.onCreageView()回调
初始化Ui操作在这里执行。传入一个回调的参数,包括LayoutInflater(可用于扩展次碎片的布局)、一个ViewGroup父元素、以及保存的状态包。这里一定要注意,不需要讲视图层次结构附加到传入的ViewGroup父元素中,该关联会自动完成。如果父容器返回的值为null将一位这该碎片不可见。
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { if(container==null) return null; }
5.onActivityCreate()回调
此阶段快到与activity交互的时刻了。它会在activity的onCreate()调用完成后调用,视图已经准备好并且可用,这是对用户界面执行最后调用调整的地方。如果此activity和它的碎片从保存状态重新创建的,此回调尤其重要,也可以在这里确保此activity的其他碎片已福建到你的activity。
6.onStart()回调
用户已经可以看到碎片,但是还未与用户交互。此回调与activit的onStart()相绑定,可以将处理逻辑放在此阶段中。
7.onResume()回调
这是与用户交互之前最后一个回调,同样与activity的onResume()相绑定。
8.onPause()回调
是碎片上第一个撤销回调,与activity的onPause()想绑定。
9.onSaveInstanceState()回调
与activity类似,保存状态以备将来重新建立。随时可以再onDestroy()发生之前调用
10.onStop()回调
第二个撤销回调,与activity的onStop()想绑定。
11.onDestroyView()回调
碎片即将结束或被保存。
12.onDestroy()回调
不再使用碎片调用,但是依然附件在activity中,只是不执行。
13.onDetach()回调
生命周期最后一个回调。调用后,碎片就不会再与其activity想绑定,不会拥有视图,所有资源也释放。