您的位置:首页 > 移动开发 > Android开发

Android Fragment 生命周期

2016-06-03 19:23 204 查看
Fragment表现Activity中用户界面的一个行为或者是一部分。你可以在一个单独的activity上把多个fragment组合成为一个多区域的UI,并且可以在多个activity中再使用。你可以认为fragment是activity的一个模块零件,它有自己的生命周期,接收它自己的输入事件,并且可以在activity运行时添加或者删除。

> 生命周期图

创建Fragment



Fragment与Activity生命周期对比图:



生命周期分析:

当一个fragment被创建的时候,它会经历以下状态.

onAttach()

onCreate()

onCreateView()

onActivityCreated()

2.当这个fragment对用户可见的时候,它会经历以下状态。

onStart()

onResume()

3.当这个fragment进入“后台模式”的时候,它会经历以下状态。

onPause()

onStop()

4.当这个fragment被销毁了(或者持有它的activity被销毁了),它会经历以下状态。

onPause()
onStop()
onDestroyView()
onDestroy() // 差点漏掉类这个回调
onDetach()


5.就像activitie一样,在以下的状态中,可以使用Bundle对象保存一个fragment的对象。

onCreate()

onCreateView()

onActivityCreated()

6.fragments的大部分状态都和activitie很相似,但fragment有一些新的状态。

onAttached() —— 当fragment被加入到activity时调用(在这个方法中可 以获得所 在的activity)。

onCreateView() ——

当activity要得到fragment的layout时,调用此方法,fragment在其中创建自己的layout(界面)。

onActivityCreated() —— 当activity的onCreated()方法返回后调用此方法

onDestroyView() —— 当fragment中的视图被移除的时候,调用这个方法。 onDetach() ——

当fragment和activity分离的时候,调用这个方法。

一旦activity进入resumed状态(也就是running状态),你就可以自由地添加和删除fragment了。因此,只有当activity在resumed状态时,fragment的生命周期才能独立的运转,其它时候是依赖于activity的生命周期变化的。

Fragment必须总是被嵌入到一个activity之中,并且fragment的生命周期直接受其宿主activity的生命周期的影响。例如,一旦activity被暂停,它里面所有的fragment也被暂停,一旦activity被销毁,它里面所有的fragment也被销毁。然而,当activity正在运行时(处于resumed的生命周期状态),你可以单独的操控每个fragment,比如添加或者删除。当你执行这样一项事务时,可以将它添加到后台的一个栈中,这个栈由activity管理着——activity里面的每个后台栈内容实体是fragment发生过的一条事务记录。这个后台栈允许用户通过按BACK键回退一项fragment事务(往后导航)。

当你添加一个fragment作为某个activity布局的一部分时,它就存在于这个activity视图体系内部的ViewGroup之中,并且定义了它自己的视图布局。你可以通过在activity布局文件中声明fragment,用元素把fragment插入到activity的布局中,或者是用应用程序源码将它添加到一个存在的ViewGroup中。然而,fragment并不是一个定要作为activity布局的一部分;fragment也可以为activity隐身工作。

这份文档描述了如何使用fragment来创建你的应用程序,包括fragment在添加到后台栈时如何维护他们的状态,如何同activity和其他同属于该activity的fragment们共享事件,构建到activity的动作槽(action bar)中去,等等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: