生命周期Activity ,Fragment,Service

来源:互联网 发布:java string split 点 编辑:程序博客网 时间:2024/06/06 07:41


Activity的生命周期


官方文档中有一个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(); }


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官方文档引到大家学习的方式大家能不能接受,本人更希望能告诉大家要如何去学习,而不是只告诉你我所学到的东西。

0 0
原创粉丝点击