我们都知道fragment的生命周期是依赖activity而存在的,上次复习了activity的生命周期这篇文章就来复习一下fragment 的生命周期。
fragment的生命周期和activity的生命周期类似,但是没有activity的onRestart()方法但是多出来了与activity之间建立联系和解除联系的几个方法,分别为onAttach,onCreatView,onActivityCreated,onDestoryView,onDetach
看一张描述fragment生命周期的图片
与activity生命周期的对比图
在对比图中可以很容易的分析出在fragment和activity创建关联以及创建fragment 的过程就是activity的OnCreate() 对应的阶段
onAttach--------->onActivityCreated 阶段
onAttach方法是在fragment第一次和activity创建关联关系的时候调用,这时候fragment和activity已经创建了关联关系可以获取activity携带的值,这个方法只调用一次
onCreate(@Nullable Bundle savedInstancestate) 方法是在onAttach方法之后onCreateView方法之前调用,用来创建一个fragment 做一些初始化操作
onCreateView(LayoutInflager inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState)方法要在onCreat 和onActivityCreated方法之间调用,作用是实例化fragment界面,这个方法是可以返回null的,如果在这里不返回一个null,在调用onDestoryView方法的时候就要释放视图view的资源,
inflater:创建fragment视图
container :这是fragment绑定的父控件视图,fragment 不能把图添加到自己的视图上但是可以在自己的视图view中使用这个视图的布局参数
savedInstanceState:前一个状态保存的数据这个视
onActivityCerated(Bundle savedinstanceState):调用这个方法的时候activity的onCreate方法已经执行完毕所有可以分析出当fragment调用onCreateView方法的时候activity的onCreate方法可能还没有执行完,所以不能在fragment的onCreateView方法中执行与activity有交互的ui操作,这些操作可以在onActivityCreated方法中进行
savedInstanceState:当fragment被重新创建的时候,之前的保存状态
onStart:和activity的生命周期中onStart方法的作用相同,fragment启动的时候调用,此时fragment可见
onResume:和activity的生命周期中onResume方法的作用相同,此时fragment与用户能进行交互时被执行,用户可以获得fragment的焦点,能够与用户交互
onPause:和activity的生命周期中onPause方法的作用相同,可见不可交互
onStop:和activity的生命周期中onStop方法的作用相同,不可见不可交互失去焦点
销毁fragment的过程中
onDestoryView:fragment的view被移除的时候调用,释放资源
onDestoty:同activity
onDetach:解除fragment与activity的关联关系
测试结果:
当我在启动一个嵌套了fragment的activity的时候,fragment的生命周期这样调用
锁屏时这样调用
打开锁屏这样调用
销毁activity时这样调用
其它情况可参考复习activity的文章
有关fragment你必须知道的事,请查阅一下微博
http://xueandroid.com/hierarchy?courseId=13&chapterId=124