1、Fragment的生命周期
2、与Activity生命周期的对比
3、下面就说一下这几个增加的生命周期方法 (1)onAttach(): 当fragment与它所在的Activity关联起来的时候调用。 (2)onCreatView(): 当需要创建一个与Fragment关联的View时候会调用,这个方法会返回一个View,这个View会被添加到Activity的View树中,如果你不想Fragment显示一个View就返回null。 (3)onActivityCreate(): 当activity的onCreate()返回后调用此方法。 (3)onDestroyView(): 当与Fragment关联的那个View(在onCreatView()方法中创建的)与Fragment解除关联,从View树中移除的时候调用,在下次Fragment需要显示一个View的时候会重新调用onCreatView方法。 (4)onDetach(): 当Fragment与之前onAttach()是关联起来的那个Activity解除关系的时候调用。 4、与Activity类似,Fragment可以停留(长时间存在)的三个状态: (1)Resumed: Fragment的运行状态,此时Fragment处于运行状态,并且可以与用户之间进行交互,类似Activity的Resumed状态。 (2)Paused: 有其他Activity获取焦点,前台运行,Fragment所在的Activity失去焦点,部分的显示在前台Activity下面。 (3)Stopped: Fragment不再可见,此时的情形可能是Fragment所在的Activity已经stopped了,或者fragment从Activity中移除到Fragment回退栈中。一个Stopped状态的Fragment不没有被销毁,还在存活状态,它的状态和内部信息被系统记录和保存,只是不可见,不可交互,此时很可能会被系统回收。 5、与Activity类似,你可以利用Bundle来记录Fragment的状态,当Activity被销毁需要记录Fragment状态,并且在Activity重新创建的时候恢复Fragment的状态。你可以保存Fragment的状态在Fragment的onSaveInstanceState()回调方法中,在onCteate()、onCreateView()或者onActivityCreated()方法中进行恢复。 6、在生命周期中Activity与Fragment的最大不同之处是回退栈是相互独立的,Activity的回退栈是系统来管理的,Fragment的回退栈是被宿主Activity来管理的,也就是说你可以来进行控制(调用addToBackStack()). 注意:在Fragment中你如果要获取一个Context对象,你可以调用getActivity()方法,但是调用getActivity()方法必须要在Fragment于Activity关联起来之后,否则getActivity()返回为null。 三、Fragment生命周期函数的场景演示 切换到该Fragment 11-29 14:26:35.095: D/AppListFragment(7649): onAttach 11-29 14:26:35.095: D/AppListFragment(7649): onCreate 11-29 14:26:35.095: D/AppListFragment(7649): onCreateView 11-29 14:26:35.100: D/AppListFragment(7649): onActivityCreated 11-29 14:26:35.120: D/AppListFragment(7649): onStart
11-29 14:26:35.120: D/AppListFragment(7649): onResume
屏幕灭掉: 11-29 14:27:35.185: D/AppListFragment(7649): onPause 11-29 14:27:35.205: D/AppListFragment(7649): onSaveInstanceState 11-29 14:27:35.205: D/AppListFragment(7649): onStop
屏幕解锁 11-29 14:33:13.240: D/AppListFragment(7649): onStart
11-29 14:33:13.275: D/AppListFragment(7649): onResume
切换到其他Fragment: 11-29 14:33:33.655: D/AppListFragment(7649): onPause 11-29 14:33:33.655: D/AppListFragment(7649): onStop
11-29 14:33:33.660: D/AppListFragment(7649): onDestroyView
切换回本身的Fragment: 11-29 14:33:55.820: D/AppListFragment(7649): onCreateView 11-29 14:33:55.825: D/AppListFragment(7649): onActivityCreated 11-29 14:33:55.825: D/AppListFragment(7649): onStart
11-29 14:33:55.825: D/AppListFragment(7649): onResume
回到桌面 11-29 14:34:26.590: D/AppListFragment(7649): onPause 11-29 14:34:26.880: D/AppListFragment(7649): onSaveInstanceState
11-29 14:34:26.880: D/AppListFragment(7649): onStop
回到应用 11-29 14:36:51.940: D/AppListFragment(7649): onStart
11-29 14:36:51.940: D/AppListFragment(7649): onResume
退出应用 11-29 14:37:03.020: D/AppListFragment(7649): onPause 11-29 14:37:03.155: D/AppListFragment(7649): onStop 11-29 14:37:03.155: D/AppListFragment(7649): onDestroyView 11-29 14:37:03.165: D/AppListFragment(7649): onDestroy
11-29 14:37:03.165: D/AppListFragment(7649): onDetach
感兴趣的朋友请继续阅读 Activity的生命周期详解。