Activity,Fragment,Service生命周期
来源:互联网 发布:deepin linux软件中心 编辑:程序博客网 时间:2024/06/05 14:40
额,这一篇拖了好久,自己在学习深一些的东西就把这一部分分享忘了。怎么说生命周期都是我们Android编程,可能不只是Android编程吧,很重要的东西。很值得写一下。之前想分享几篇别人写的不错的。不过想了想还是自己写一下吧。
其实不管是什么的生命周期,Acitivity也好,Fragment也好,Service也好,Google提供的开发这文档都是最好的学习工具。如果还不会使用Google官方提供的API的就看看我们上一篇文章吧。
Activity的生命周期
那我们就打开Google官方文档去看看吧。
官方文档中有一个Activity 生命周期的一个图,基本上把这个图看懂就没什么问题了。
之后文档中又对此图经行了说明:
这里有三个关键的环路:
1、整个生命周期:就是从一个Activity创建(调用他的onCreate()函数)到Activity销毁(调用他的onDestory()函数),而创建时也就对应的创建了一个Activity所需要的资源,在销毁时便释放资源,(之后官方文档举了一个例子,还不错,有兴趣可以去看看),好下面说人话,其实整个生命周期就是一个Activity从出生到死亡的过程,这个出生就是onCreate(),死亡就是onDestory();
2、可见生命周期:它发生在onstart(),和onStop()之间,顾名思义,在这个期间你是在屏幕上可以看到这个Activity的,但是不一定这个Activity在也用户交互,比如我们有一个Dialog样式的另一个Activity显示出来,这个时候下面的Activity还是可以看到的,但和用户交互的并不是这个Activity,这时它也是生存在可见生命周期的;
3、前台生命周期:这个在onResume()和onPause()之间,在这个期间呢,Activity是一直在所有的Activity的最上面并与用户交互。这个周期可能非常频繁,例如我们的设备进入睡眠模式,这个Activity就会调用他的onStop()函数,当唤醒我们的设备的时候,会再调用它的onResume();
大家理解了上面生命周期的三个环路,基本上就把这个理解的差不多了,下面列出Activity生命周期有关的函数。
public class Activity extends ApplicationContext { protected void onCreate(Bundle savedInstanceState); protected void onStart(); protected void onRestart(); protected void onResume(); protected void onPause(); protected void onStop(); protected void onDestroy(); }细心的朋友可能发现还有一个,onRestart()函数,这个函数是什么时候调用的呢?
依然回头去看上面生命周期的图,在onStop()之后,用户返回这个Activity的时候,有两种情况
情况一(看右边这个返回箭头):就是正常的情况喽,Acitivty的资源还在,那么这时候会先调用onRestart(),然后再调用onStart();
情况二(看左边这个返回箭头):这里他写的Apps with higher priority need memory,这个意思就是有更高优先权的应用程序需要内存,言外之意就是这个Activity的资源已经被系统从内存中干掉了,这个时候就要重新去加载这个Activity也就是要调用他的onCreate()函数。
这个时候我们便又发现,onPause()之后也有一个向左的箭头,这样我们便可以看出,只有处在前台生命周期中的Activity的资源才不会被系统回收。
Activity生命周期的实验源代码随处都可以找到,而且也很简单,随处可以找到。只要重载上面的函数,在里面用Log输出信息就可以了。
Fragment的生命周期
思路还是一样的,我们先去Google提供的官方文档去查看一下这个类:
那么我们在API Guides中我们搜素Fragments便可以看到Fragment的生命周期,和他的说明,先看这张图;
这里我们可以看到,Fragment的生命周期相对于Activity的生命周期有几分神似对吧,Fragment有onCreate(),Activity也有,onStart(),onResume(),onPause()...,其实呢Fragment的生命周期和Activity的就是很像。来让我们看google官方给的另个一图。
这样是不是就很清楚了。其实只是多了几个回调函数,把Fragment的状态分的更细了,但是他依然和Activity的那几个状态是一样的。那么为什么相对于Activity多了那几个状态呢,其实是和植入Activity中有关的。
我们再到Fragment中去看一下这个类。在这里面有一个Lifecycle一栏里有介绍Fragment中生命周期中出现的所有回调函数。
也没有什么不好理解的,说的都是人话,我就拿来翻一下,真心觉得官方文档写的很不错。
1.onAttach(Activity):一旦和他所植入的Acitivty结合的时候回调;
2.onCreate(Bundle):创建初始化操作的时候回调;
3.onCreateView(LayoutInflater, ViewGroup, Bundle):创建并返回与片段有关的视图层次结构;
4.onActivityCreated(Bundle):告诉Fragment他的Activity完成了自己的onCreate()操作;
5.onViewStateRestored(Bundle):告诉Fragment他的所有视图层次都已经恢复完毕了;
6.onStart():使这个Fragment显示出来,要基于他所植入的Activity已经启动了;
7.onResume():使这个Fragment可以与用户交互,要基于他所植入的Activity已经在运行状态了;
8.onPause():这个Fragment不再与用户交互,可能因为是所植入的Activity被paused了,也可能是在所植入的Activity中有一个操作正在修改他;
9.onStop():这个Fragment不再显示出来,可能因为是所植入的Activity被stoped了,也可能是在所植入的Activity中有一个操作正在修改他;
10.onDestroyView():允许这个Fragment清理他所占有的视图资源;
11.onDestroy():执行Fragment的最终清理阶段;
12.onDetach():立刻与所植入的Activity断开连接;
Services的生命周期
还是惯例(大家不要烦我),依然是Google的官方文档,在API Guides中查看Services,可以看到一个Service生命周期的图片:
我们都知道,Service的在启动的时候有两种方式,一种是调用startService()方法,另一种是调用bindService()方法让其和一个Activity绑定起来。那么这两种方法边有两种生命周期。即Unbounded Service和Bounded Service的生命周期。
理解上面两种状态,那么分开看两个图,这个就很容易理解了。感觉没什么好解释的吧。未绑定的onCreate()创建这个Service,在执行onStartCommand()函数,开始这个服务,然后通过其他的Client或者自己内部结束服务。而绑定的Service是通过绑定来开始执行的,当Client调用解绑函数的时候停止服务。
备注:
这里就Activity,Fragment,Service的生命周期根据Google提供的官方文档做了简单的介绍,希望对各位朋友对Activity,Fragment,和Service的理解有所帮助。
写作风格比较随意,而且不知道这种从Google官方文档引到大家学习的方式大家能不能接受,本人更希望能告诉大家要如何去学习,而不是只告诉你我所学到的东西。
本人初来乍到,有什么建议意见还请各位大神斧正,如果文章中有错误也请各位提出以供我改正,谢谢大家,希望能与大家共同进步。
本文纯属原创如有转载请注明出处。
- Activity,Fragment,Service生命周期
- Activity,Service,Fragment生命周期
- 生命周期Activity ,Fragment,Service
- Activity&Fragment&Service的生命周期
- activity,Fragment,Service的生命周期图
- 生命周期——activity、service、fragment
- Android--activity,fragment,service等生命周期图
- 【笔记】Activity、Fragment、Service生命周期梳理
- Activity,Fragment,Service的生命周期总结
- Android复习之旅--Activity/Service/Fragment 生命周期
- Android中Activity、Fragment与Service的生命周期
- [完整版]Activity生命周期、Fragment生命周期
- fragment生命周期与Activity生命周期
- activity和fragment生命周期
- Activity与Fragment生命周期
- Fragment和Activity生命周期
- Activity和Fragment生命周期
- Android Activity Fragment 生命周期
- Hadoop 从零开始学习系列-hive与hbase外部关联表建立及数据导入
- 线段树模板
- git@oschina 上的web项目基础框架
- C#如何操控FTP
- 欧几里得算法 模板
- Activity,Fragment,Service生命周期
- 值得推荐的C/C++框架和库
- Java反射机制 以及 method.invoke运用
- css3.0中transition属性设置过度的动态效果
- C++设计模式之解释器模式
- apue源文件的下载与使用
- 高精度乘法模板
- 设备相关
- 浅谈数据挖掘中的关联规则挖掘