首页 > 代码库 > Fragment的生命周期

Fragment的生命周期

        Fragment的生命周期有11个,比Activity的生命周期会复杂不少,而且Fragment的生命周期同Activity的生命周期的穿插的执行的,看图:

技术分享


其中背景为蓝色的为Activity的生命周期,其他的为Fragment周期,由图可以看出,在Fragment初始化完成前,相同的生命周期都是Activity先执行的,而进入销毁的周期时,就变成了Fragment的先执行。


1、  public void onAttach(Activity activity)方法

执行完该方法,Fragment就与Activity关联起来了,此时可以通过getActivity()获取到关联的Activity对象,但是此时控件还没被装载,所以无法获得关联Activity中的任何控件。

2、  public void onCreate(Bundle savedInstanceState)

此方法为装载Fragment中的视图做准备,savedInstanceState参数为恢复状态的参数,同Activity的onCreate中的参数类似,执行完此方法照样无法获取到Activity的控件。

3、  public View onCreateView(LayoutInflater inflater,  ViewGroup container,  Bundle savedInstanceState)

此方法为Fragment生命周期中最重要的一个,在该方法中会装载Fragment要显示的视图,可以在该方法中获取到视图中的各个控件,并控制这些的控件的显示,参数container为要装载的视图的父视图。但在该方法执行结束之后,仍无法获取Activity中除了当前Fragment外的其他控件。

4、  public void onActivityCreated(Bundle savedInstanceState)

执行完此方法,表示窗口已经初始化完成,此时才可以通过  getActivity().findViewById()方法获取Activity中的所有控件。

5、  public void onStart()

6、  public void onResume()

7、  public void onPause()

8、  public void onStop()

这个四个方法,与Activity生命周期中相对应的方法类似。

9、  public void onDestroyView()

调用完此法方法,在onCreateView创建的View将会与Fragment分离。

10、public void onDestroy()

此时无法对Fragment进行操作了,但是Fragment仍与Activity相关联。

11、 public void onDetach()

这个Fragment生命周期的最后一个方法了,执行完这个方法,Fragment不在和Activity相关联,相关的View也会被销毁。


Fragment的生命周期