Android Fragment的生命周期说明
Posted YaoYong_BigData
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Fragment的生命周期说明相关的知识,希望对你有一定的参考价值。
要创建一个fragment,必须创建一个Fragment 的子类 (或者继承自一个已存在的它的子类)。Fragment类的代码看起来很像 Activity 。它包含了和activity类似的回调方法,例如onCreate()、 onStart()、onPause()以及 onStop()。事实上,如果你准备将一个现成的android应用转换到使用fragment,可能只需简单的将代码从你的activity的回调方法分别移动到你的fragment的回调方法即可。
通常,应当至少实现如下的生命周期方法:
- onCreate() 当创建fragment时,系统调用该方法。在实现代码中,应当初始化想要在fragment中保持的必要组件,当fragment被暂停或者停止后可以恢复,
- onCreateView() fragment第一次绘制它的用户界面的时候,系统会调用此方法。为了绘制fragment的UI,此方法必须返回一个View,这个view是你的fragment布局的根view。如果fragment不提供UI,可以返回null。
- onPause() 用户将要离开fragment时,系统调用这个方法作为第一个指示(然而它不总是意味着fragment将被销毁) 在当前用户会话结束之前,通常应当在这里提交任何应该持久化的变化(因为用户有可能不会返回)。
一个Fragment的生命周期图如下:
大多数应用应当为每一个fragment实现至少这3个方法,但是还有一些其他回调方法你也应当用来去处理fragment生命周期的各种阶段。
首先第一次创建Fragment的时候,其实执行了这么多方法:
1 | onAttach -> onCreate -> onCreateView ->onViewCreated -> onActivityCreated -> onViewStateRestored -> onStart -> onResume |
举几个例子:
- 按HOME键或者打开别的应用时:onPause -> onStop
- 从桌面回来或者从别的应用回来:onStart -> onResume
- 我在将Fragment和ViewPager一起使用的时候,还遇见过这种情况,通过ViewPager从一个Fragment切换到另外一个Fragment的时候执行的是:onPause -> onStop -> onDestroyView
- 多了一个onDestroyView。再次切换回来执行:onCreateView -> onViewCreated -> onActivityCreated -> onViewStateRestored -> onStart -> onResume
- 离开Activity时Fragment被彻底销毁执行的是:onPause -> onStop -> onDestoryView -> onDestory -> onDetach
以上是关于Android Fragment的生命周期说明的主要内容,如果未能解决你的问题,请参考以下文章