Android Activity生命周期以及Fragment生命周期的区别与分析
2017-10-12 10:58
525 查看
Android Activity生命周期以及Fragment生命周期的区别与分析
Android Fragment生命周期图:Activity生命周期图:
对照图:
Fragment生命周期分析:
1. 当一个fragment被创建的时候,它会经历以下状态.
onAttach()
onCreate()
onCreateView()---onViewCreate
onActivityCreated()
2. 当这个fragment对用户可见的时候,它会经历以下状态。
onStart()
onResume()
3. 当这个fragment进入“后台模式”的时候,它会经历以下状态。
onPause()
onStop()
4. 当这个fragment被销毁了(或者持有它的activity被销毁了),它会经历以下状态。
onPause()
onStop()
onDestroyView()
onDestroy() // 本来漏掉类这个回调,感谢xiangxue336提出。
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的生命周期变化的。
Activity生命周期分析:
上面7个生命周期方法分别在4个阶段按着一定的顺序进行调用,这4个阶段如下:
开始Activity:在这个阶段依次执行3个生命周期方法:onCreate、onStart和onResume。
Activity失去焦点:如果在Activity获得焦点的情况下进入其他的Activity或应用程序,这时当前的Activity会失去焦点。在这一阶段,会依次执行onPause和onStop方法。
Activity重新获得焦点:如果Activity重新获得焦点,会依次执行3个生命周期方法:onRestart、onStart和onResume。
关闭Activity:当Activity被关闭时系统会依次执行3个生命周期方法:onPause、onStop和onDestroy。
如果在这4个阶段执行生命周期方法的过程中不发生状态的改变,那么系统会按着上面的描述依次执行这4个阶段中的生命周期方法,但如果在执行的过程中改变了状态,系统会按着更复杂的方式调用生命周期方法。
在执行的过程中可以改变系统的执行轨迹的生命周期方法是onPause和onStop。如果在执行onPause方法的过程中Activity重新获得了焦点,然后又失去了焦点。系统将不会再执行onStop方法,而是按着如下的顺序执行相应的生命周期方法:
onPause -> onResume-> onPause
如果在执行onStop方法的过程中Activity重新获得了焦点,然后又失去了焦点。系统将不会执行onDestroy方法,而是按着如下的顺序执行相应的生命周期方法:
onStop -> onRestart -> onStart -> onResume -> onPause -> onStop
在图2所示的Activity生命周期里可以看出,系统在终止应用程序进程时会调用onPause、onStop和onDesktroy方法。而onPause方法排在了最前面,也就是说,Activity在失去焦点时就可能被终止进程,而onStop和onDestroy方法可能没有机会执行。因此,应该在onPause方法中保存当前Activity状态,这样才能保证在任何时候终止进程时都可以执行保存Activity状态的代码。
相关文章推荐
- Android Activity生命周期以及Fragment生命周期的区别与分析
- Android Activity生命周期以及Fragment生命周期的区别与分析
- Android笔记(9)---Fragment的生命周期以及在Activity之间的传值
- fragment中onCreateView与onActivityCreated的区别,以及fragment中生命周期的利用
- fragment中onCreateView与onActivityCreated的区别,以及fragment中生命周期的利用
- Android Activity生命周期以及Fragment生命周期的区别与分析
- Android Fragment生命周期图以及Activity与Fragment生命周期对照图
- Android:分析app、Process、Task之间的区别,以及获取最近运行的程序(近期任务)与正在运行的程序
- android 没有main函数,怎么找到程序执行入口呢?以及activity主要生命周期的方法说明
- android90--什么是Service以及描述下它的生命周期。Service有哪些启动方法,有什么区别,怎样停用Service
- android fragment和activity的区别
- Android Activity Fragment 生命周期
- Android:Activity和Fragment生命周期实践
- Android Activity和Fragment的生命周期图
- android Activity和Fragment生命周期实践
- 【Activity】AndroidManifest.xml中android:configChanges以及Activity的生命周期实测
- Android中Activity和task,活动亲和力,启动模式,活动状态以及生命周期,激活钝化
- Android 中Activity生命周期分析:Android中横竖屏切换时的生命周期过程
- Android Fragment---与Activity生命周期的协调
- Android Fragment---与Activity生命周期的协调