天天看点

Android Fragment 生命周期介绍

最近的项目中使用了Fragment,通过参考文档和网上相关文章,对Fragment的一些总结如下:

Android Fragment API兼容Android 1.6到3.0之间的版本,使用Fragment API可以很好的解决Android分辨率众多的问题,Fragment由于是Android Honeycomb的新特性,如果向下兼容必须发布相应的静态库,使其支持。而官方文档中TabActivity已被标记为deprecated,建议使用Fragment代替。

首先附上两个相关案例:

Android-ViewPagerIndicator

SeriesGuide

Fragment有自己的生命周期,接收自己的输入事件,你可以添加或移除从运行中的activity。 一个Fragment必须总是嵌入在一个Activity中,同时Fragment的生命周期受Activity而影响,举个例子吧,当Activity暂停,那么所有在这个Activity的Fragments将被destroy释放。然而当一个Activity在运行比如resume时,你可以单独的操控每个Fragment,比如添加或删除。

Fragment的生命周期如下图所示:

Android Fragment 生命周期介绍

onCreate()

当创建fragment时, 系统调用此方法.

在实现代码中, 应当初始化想要在fragment中保持的必要组件, 当fragment被暂停或者停止后可以恢复.

onCreateView()

fragment第一次绘制它的用户界面的时候, 系统会调用此方法. 为了绘制fragment的UI, 此方法必须返回一个View, 这个view是你的fragment布局的根view.  如果fragment不提供UI, 可以返回null.

onPause()

用户将要离开fragment时,系统调用这个方法作为第一个指示(然而它不总是意味着fragment将被销毁.) 在当前用户会话结束之前,通常应当在这里提交任何应该持久化的变化(因为用户有可能不会返回).

大多数应用应当为每一个fragment实现至少这3个方法, 但是还有一些其他回调方法你也应当用来去处理fragment生命周期的各种阶段.全部的生命周期回调方法将会在后面章节 Handling the Fragment Lifecycle 中讨论.

除了继承基类 Fragment , 还有一些子类你可能会继承:

DialogFragment

显示一个浮动的对话框.

用这个类来创建一个对话框,是使用在Activity类的对话框工具方法之外的一个好的选择,

因为你可以将一个fragment对话框合并到activity管理的fragment back stack中, 允许用户返回到一个之前曾被摒弃的fragment.

ListFragment

显示一个由一个adapter(例如 SimpleCursorAdapter)管理的项目的列表, 类似于 ListActivity.

它提供一些方法来管理一个list view, 例如 onListItemClick() 回调来处理点击事件.

PreferenceFragment

显示一个 Preference对象的层次结构的列表, 类似于 PreferenceActivity.

这在为你的应用创建一个"设置"activity时有用处.

具体的使用方法请参考官方文档。