【Fragment】生命周期
2016-12-13 17:41
176 查看
1、大部分来自 http://blog.csdn.net/harvic880925/article/details/44917955
2、 左边–>Fragment生命周期 , 右边–>Activity与Fragment生命周期对比
![](https://img-blog.csdn.net/20161213172057507?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzQyMDg2NQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20161213172312154?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzQyMDg2NQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
3、详解
onAttach:onAttach()在fragment与Activity关联之后调用。需要注意的是,初始化fragment参数可以从getArguments()获得,但是,当Fragment附加到Activity之后,就无法再调用setArguments()。所以除了在最开始时,其它时间都无法向初始化参数添加内容。在这之后,getActivity()都是有值的,fragment可以通过getActivity()来获取相关联的Activity的实例。
onCreate:fragment初次创建时调用。尽管它看起来像是Activity的OnCreate()函数,但这个只是用来创建Fragment的。此时的Activity还没有创建完成,因为我们的Fragment也是Activity创建的一部分。所以如果你想在这里使用Activity中的一些资源,将会获取不到。比如:获取同一个Activity中其它Frament的控件实例。如果想要获得Activity相关联的资源,必须在onActivityCreated中获取。
onCreateView:在这个fragment构造它的用户接口视图(即布局)时调用。在这里期望返回此Fragment的一个视图层次结构。代码如下:
onActivityCreated:Activity的OnCreate()结束后调用。到这里的时候,Activity已经创建完成!在这个函数中才可以使用Activity的所有资源。比如获取同一个Activity中其它Frament的控件实例。
onStart:当到OnStart()时,Fragment对用户就是可见的了。但用户还未开始与Fragment交互。在生命周期中可以看到,此回调与Activity的OnStart()相绑定,意义一样。以前写在Activity的OnStart()中来处理的代码,用Fragment来实现时,依然可以放在OnStart()中来处理。
onResume:当这个fragment对用户可见并且正在运行时调用。这是Fragment与用户交互之前的最后一个回调。在生命周期中可以看到,此回调与Activity的OnResume()相绑定,意义一样。它依赖于包含它的activity的Activity.onResume。当OnResume()结束后,就可以正式与用户交互了。
onPause:此回调与Activity的OnPause()相绑定,意义一样。
onStop:此回调与Activity的OnStop()相绑定,意义一样。已停止的Fragment可以直接返回到OnStart()回调,然后调用OnResume()。
onDestroyView:如果Fragment即将被结束或保存,那么撤销方向上的下一个回调将是onDestoryView()。在onCreateView创建的视图会与这个fragment分离。下次这个fragment若要显示,那么将会创建新视图。这会在onStop之后和onDestroy之前调用。这个方法的调用同onCreateView是否返回非null视图无关。它会潜在的在这个视图状态被保存之后以及它被它的父视图回收之前调用。
onDestroy:当这个fragment不再使用时调用。需要注意的是,它即使经过了onDestroy()阶段,但仍然能从Activity中找到,因为它还没有Detach。
onDetach:Fragment生命周期中最后一个回调。调用它以后,Fragment就不再与Activity相绑定,它也不再拥有视图层次结构,它的所有资源都将被释放。
3、官方文档 https://developer.android.com/guide/components/fragments.html
2、 左边–>Fragment生命周期 , 右边–>Activity与Fragment生命周期对比
3、详解
onAttach:onAttach()在fragment与Activity关联之后调用。需要注意的是,初始化fragment参数可以从getArguments()获得,但是,当Fragment附加到Activity之后,就无法再调用setArguments()。所以除了在最开始时,其它时间都无法向初始化参数添加内容。在这之后,getActivity()都是有值的,fragment可以通过getActivity()来获取相关联的Activity的实例。
onCreate:fragment初次创建时调用。尽管它看起来像是Activity的OnCreate()函数,但这个只是用来创建Fragment的。此时的Activity还没有创建完成,因为我们的Fragment也是Activity创建的一部分。所以如果你想在这里使用Activity中的一些资源,将会获取不到。比如:获取同一个Activity中其它Frament的控件实例。如果想要获得Activity相关联的资源,必须在onActivityCreated中获取。
onCreateView:在这个fragment构造它的用户接口视图(即布局)时调用。在这里期望返回此Fragment的一个视图层次结构。代码如下:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment3, container, false); // 该方法是public View inflate(int resource, ViewGroup root, boolean attachToRoot) // 第一个参数:当前fragment的布局。 // 第二个参数:fragment的父窗口。可以为NULL,意味着该Fragment不可见,因为它没有附加到任何的视图层次中。 // 第三个参数:是否当前XML的根结点作为整个APP视图的根结点。一般为FALSE。如果设为TRUE,那返回的VIEW将是整个APP视图架构的根结点,我们一般不需要这么做。因为我们的Fragment是依附于Activity的,Activity上可能有其它控件,我们的Fragment只是其中的一个小分支,如果这里设为TRUE,那么Fragment以外的分支将被全部删除,整个APP视图将会只有Fragment; }
onActivityCreated:Activity的OnCreate()结束后调用。到这里的时候,Activity已经创建完成!在这个函数中才可以使用Activity的所有资源。比如获取同一个Activity中其它Frament的控件实例。
onStart:当到OnStart()时,Fragment对用户就是可见的了。但用户还未开始与Fragment交互。在生命周期中可以看到,此回调与Activity的OnStart()相绑定,意义一样。以前写在Activity的OnStart()中来处理的代码,用Fragment来实现时,依然可以放在OnStart()中来处理。
onResume:当这个fragment对用户可见并且正在运行时调用。这是Fragment与用户交互之前的最后一个回调。在生命周期中可以看到,此回调与Activity的OnResume()相绑定,意义一样。它依赖于包含它的activity的Activity.onResume。当OnResume()结束后,就可以正式与用户交互了。
onPause:此回调与Activity的OnPause()相绑定,意义一样。
onStop:此回调与Activity的OnStop()相绑定,意义一样。已停止的Fragment可以直接返回到OnStart()回调,然后调用OnResume()。
onDestroyView:如果Fragment即将被结束或保存,那么撤销方向上的下一个回调将是onDestoryView()。在onCreateView创建的视图会与这个fragment分离。下次这个fragment若要显示,那么将会创建新视图。这会在onStop之后和onDestroy之前调用。这个方法的调用同onCreateView是否返回非null视图无关。它会潜在的在这个视图状态被保存之后以及它被它的父视图回收之前调用。
onDestroy:当这个fragment不再使用时调用。需要注意的是,它即使经过了onDestroy()阶段,但仍然能从Activity中找到,因为它还没有Detach。
onDetach:Fragment生命周期中最后一个回调。调用它以后,Fragment就不再与Activity相绑定,它也不再拥有视图层次结构,它的所有资源都将被释放。
3、官方文档 https://developer.android.com/guide/components/fragments.html
相关文章推荐
- Fragment之一:封装及生命周期
- 史上最全Fragment介绍,包括fragment的定义,生命周期,用法
- 实例讲解Android应用开发中Fragment生命周期的控制
- ViewPager中Fragment的生命周期
- 3.1 Fragment理论知识及其生命周期,看这一片就够了
- Android Activity与Fragment生命周期 对应关系
- 理解Fragment的生命周期
- Android Fragment的生命周期及使用
- Android开发:5分钟解析Activity&Fragment生命周期
- Glide原理之Activity、Fragment生命周期监听(三)
- 理解Fragment生命周期
- 一张图帮你分析activity与fragment的生命周期及其他们的关系
- Fragment与Activity的生命周期之间的联系
- Fragment详解(四)Fragment生命周期
- Activity Fragment 生命周期顺序
- Activity 与Fragment 生命周期的交换
- 深刻的理解Fragment生命周期 都在做什么,fragment生命周期
- Android Fragment生命周期
- 关于FragmentManager动态管理Fragment时Fragment生命周期的探究
- ViewPager、FragmentPagerAdapter、FragmentStatePagerAdapter生命周期比较