Fragment生命周期

430 阅读3分钟

「这是我参与11月更文挑战的第22天,活动详情查看:2021最后一次更文挑战

Fragment生命周期比activity的生命周期多了几个额外的生命周期回调方法:

在activity onCreate阶段,fragment需要执行如下回调

1、onAttach:onAttach()在fragment与Activity关联之后调调查用。需要注意的是,初始化fragment参数可以从getArguments()获得,但是,当Fragment附加到Activity之后,就无法再调用setArguments()。所以除了在最开始时,其它时间都无法向初始化参数添加内容。

2、onCreate:fragment初次创建时调用。尽管它看起来像是Activity的OnCreate()函数,但这个只是用来创建Fragment的。此时的Activity还没有创建完成,因为我们的Fragment也是Activity创建的一部分。所以如果你想在这里使用Activity中的一些资源,将会获取不到。比如:获取同一个Activity中其它Frament的控件实例。如果想要获得Activity相关联的资源,必须在onActivityCreated中获取。

3、onCreateView:在这个fragment构造它的布局时调用。

4、onActivityCreated:在Activity的OnCreate()结束后,会回调此方法,此时activity已创建完成,fragment可以使用该activity中所有资源。

OnStart onResume onPause 和onStop回调和activity生命周期是一样的

    onStart:当到OnStart()时,Fragment即对用户可见

    onResume:当这个fragment对用户可见并且正在运行时调用。这是Fragment与用户交互之前的最后一个回调。它依赖于包含它的activity的Activity.onResume。当OnResume()结束后,就可以正式与用户交互了。

    onPause:与acitivity onPause回调意义一致,当前界面不在栈顶了,仍然可见的时候,这个时候处于pause状态,比如弹出一个dialog的时候,这个时候栈顶的activity就是暂停状态,但是对用户还是可见的,系统会在内存极低的时候,回收掉这个activity。

    onStop:当前界面完全不可见的时候,进入停止状态,系统会对这类活动进行短暂的保活,并不是完全可靠的,如果其他地方需要内存的时候,处于停住状态就会被回收。

在activity onDestory阶段,fragment需要执行如下回调:

   1、 onDestroyView:在onStop之后和onDestroy之前调用,将在onCreateView创建的视图与这个fragment分离。下次这个fragment若要显示,那么将会创建新视图。。这个方法的调用同onCreateView是否返回非null视图无关。它会潜在的在这个视图状态被保存之后以及它被它的父视图回收之前调用。

    2、onDestroy:当这个fragment不再使用时调用。需要注意的是,它即使经过了onDestroy()阶段,但仍然能从Activity中找到,因为它还没有Detach。

    3、onDetach:Fragment生命周期中最后一个回调是onDetach()。调用它以后,Fragment就不再与Activity相绑定,它也不再拥有视图层次结构,它的所有资源都将被释放。