Android Fragment生命周期图:spa
Activity生命周期图:对象
对照图:生命周期
Fragment生命周期分析:进程
1. 当一个fragment被建立的时候,它会经历如下状态.it
2. 当这个fragment对用户可见的时候,它会经历如下状态。后台
3. 当这个fragment进入“后台模式”的时候,它会经历如下状态。fragment
4. 当这个fragment被销毁了(或者持有它的activity被销毁了),它会经历如下状态。程序
5. 就像activitie同样,在如下的状态中,可使用Bundle对象保存一个fragment的对象。方法
6. fragments的大部分状态都和activitie很类似,但fragment有一些新的状态。im
一旦activity进入resumed状态(也就是running状态),你就能够自由地添加和删除fragment了。所以,只有当activity在resumed状态时,fragment的生命周期才能独立的运转,其它时候是依赖于activity的生命周期变化的。
Activity生命周期分析:
上面7个生命周期方法分别在4个阶段按着必定的顺序进行调用,这4个阶段以下:
若是在这4个阶段执行生命周期方法的过程当中不发生状态的改变,那么系统会按着上面的描述依次执行这4个阶段中的生命周期方法,但若是在执行的过程当中改变了状态,系统会按着更复杂的方式调用生命周期方法。
在执行的过程当中能够改变系统的执行轨迹的生命周期方法是onPause和onStop。若是在执行onPause方法的过程当中Activity从新得到了焦点,而后又失去了焦点。系统将不会再执行onStop方法,而是按着以下的顺序执行相应的生命周期方法:
若是在执行onStop方法的过程当中Activity从新得到了焦点,而后又失去了焦点。系统将不会执行onDestroy方法,而是按着以下的顺序执行相应的生命周期方法:
在图2所示的Activity生命周期里能够看出,系统在终止应用程序进程时会调用onPause、onStop和onDesktroy方法。而onPause方法排在了最前面,也就是说,Activity在失去焦点时就可能被终止进程,而onStop和onDestroy方法可能没有机会执行。所以,应该在onPause方法中保存当前Activity状态,这样才能保证在任什么时候候终止进程时均可以执行保存Activity状态的代码。