Android中各种组件的生命周期

转载 2016年08月30日 15:06:38

发现android中许多东西都涉及生命周期这玩意儿,刚开始没有太在意,觉得生命周期嘛,就跟web软件、win软件一样,比较简单。不过到现在为止,我才发现生命周期在android的开发中是那么的重要,于是乎我决定汇总一下android中的一些关于生命周期的内容。以下的只是都是我通过写代码,或者通过看网络文章了解的,一方面可能不是很全,一方面可能有些地方不是很正确,所以如果有什么不对的地方请各位卓友告诉我,小弟感知不尽T T.

1,Activty生命周期

2,service生命周期

3,BroadcastReceiver生命周期

4,Thread生命周期

 

 

1,Activity的生命周期

一个Activity就相当于一个单独的界面,类似于web中的一张网页。

Activity一共有四个状态:

    Active:在屏幕最前端,处于栈的最顶端

    Paused:被一个Activiy覆盖,比如Dialog,仍然可见

    Stoped:被一个Activity覆盖,不可见

    Killed:被系统杀死

Activity的生命周期有七个过程:

OnCreate():

当Activity第一次加载时执行。另外当Activity被OnDestroy后,重新加载任务的时候会重新被执行。

OnStart():

OnCreate后就会执行OnStart。另外当activity被交换到后台后,在用户从新查看窗体前已经过去了一段时间,窗体已经执行了onstop()事件,但是窗体和其所在进程并没有被销毁,那么用户再次查看窗体的时候就会跳过oncreate而执行onstart()事件。

OnResume():

Onstart()后就执行onresume()事件。另外当activity被交换到后台后,用户重新查看时,如果既没有执行过OnDestroy,也没有执行过onstop事件,那么会跳过oncreate()和onstart()事件,直接执行onresume();

OnPause():

窗体交换到后台的时候执行onpause()事件

OnStop():

Onpause事件后就执行onstop()事件。当用户一段时间没有再次重新查看该窗体,则onstop事件就会执行。或者用户直接按了back按键,也就执行onstop()事件。

OnDestroy():

Activity销毁的时候执行ondestroy()事件。在窗体的onstop()事件之后,如果没有再次查看该窗体,activity则会被销毁


程序正常启动:onCreate()->onStart()->onResume();
正常退出:onPause()->onStop()->onDestory()
一个Activity启动另一个Activity: onPause()->onStop(), 再返回:onRestart()->onStart()->onResume()
程序按back 退出: onPause()->onStop()->onDestory(),再进入:onCreate()->onStart()->onResume();
程序按home 退出: onPause()->onStop(),再进入:onRestart()->onStart()->onResume();

 

2,Service的生命周期

首先启动service的方式有两种,不同的启动方式使其生命周期有所不同,如下:

Context.startService():

    调用者和服务之间没有联系,即使调用者退出了,服务依然在进行【onCreate()-  >onStartCommand()->startService()->onDestroy()】,注意其中没有 onStart()(PS:sdk2.0以后就不推荐用这个方法了),主要是被onStartCommand()方法给取代了。

  如果service还没有运行 那么会先执行onCreate(),接着执行onStartCommand(),但是如果service已经运行了那么就直接执行onStartCommand()方法了,而不会再次执行onCreate()方法了。

Context.bindService():

   调用者和绑定者绑在一起,调用者一旦退出服务也就终止了【onCreate()->onBind()->onUnbind()->onDestroy()】

   bindService()方法的具体使用可以参照下面这个博客哦

   Android中BindService方式使用的理解

Service生命周期总结:

  service是没有界面,并且它是在后台运行的,所以免去了onPause、OnStop、OnResume这些方法。

 

 3,BroadcastReceiver的生命周期

   BroadcaseReceiver用于接收和处理广播通知,多数的广播是系统发起的,如地域变换、电量不足、来 电来信等。程序也可以播放一个广播。程序可以有任意数量的 broadcast receivers来响应它觉得重要的通知。broadcast receiver可以通过多种方式通知用户:启动activity、使用NotificationManager、开启背景灯、振动设备、播放声音等,最 典型的是在状态栏显示一个图标,这样用户就可以点它打开看通知内容。

通常我们的某个应用或系统本身在某些事件(电池电量不足、来电来短信)来临时会广播一个Intent出去,我们可以利用注册一个Broadcast Receiver来监听到这些Intent并获取Intent中的数据。

  所以其实BroadcaseReceiver处理广播的过程不能严格算是生命周期,而是一个动作过程,在这个过程中它会调用onReceive方法,当这个方法执行到最后,BroadcaseReceiver的这个过程也就结束了。

 

4,Thread生命周期

  new创建一个线程后,该线程处于新建状态

   当线程对象调用了start()后,该线程处于就绪状态

   处于就绪状态的线程开始执行run方法时,该线程处于运行状态

   这个时候如果线程调用了sleep(),该线程就处于阻塞状态

   run()方法执行完成后,该线程处于死亡状态

以上就是线程的生命周期,不过我问了几个开发了几年android的技术关于线程的生命周期,这边我再补充一下:

  若是在服务启动的话,享有的最大生命周期与服务的生命周期相同

  若是由主线程创建的话,则享受的最大生命周期与当前所在activity的相同生命周期相同

JSF生命周期的6个阶段

1 重建视图: 建议组件树,如果是首次渲染,则组件树被重置合适的状态;如果是首次渲染,则   组件树被创建跳到响应阶段。 2 应用请求值: 树中的每个组件都能从请求参数中提取的新的值,并把值存储本地....
  • amwiacel
  • amwiacel
  • 2013年11月07日 14:56
  • 2221

React Native(RN)-组件生命周期

生命周期简介像 Android 开发一样,React Native(RN) 中的组件也有生命周期(Lifecycle)。 (借用大神流程图)这张图很简洁直观地告诉我们,生命周期的整个流程...
  • u012583459
  • u012583459
  • 2016年11月01日 21:04
  • 1153

Android四大组件生命周期

四大组件的生命周期     介绍生命周期之前,先了解下任务的概念 任务就是Activity的栈,它由一个或多个Activity组成的共同完成” 应用程序” .栈底的是启动整个任务的Activity,栈...
  • u013068440
  • u013068440
  • 2015年10月29日 23:10
  • 803

angualr4基础之组件生命周期

组件生命周期//这个顺序是按照执行的先后排列的 constructor:构造器函数,一般用于注入服务 ngOnChanges:检测到输入数据变化,首次触发发生在ngOnInit前。注意对象的属性发生变...
  • fan2252228703
  • fan2252228703
  • 2017年09月27日 19:09
  • 656

Android中各种组件的生命周期

这篇文章很好,就复制过来。原文在http://www.cnblogs.com/songnanjie/archive/2012/02/23/2364266.html...
  • yazitea
  • yazitea
  • 2014年05月15日 09:51
  • 491

React Native组件生命周期

概述所谓生命周期,就是一个对象从开始生成到最后消亡所经历的状态,理解空间的生命周期,是开发中必须掌握的一个知识点。就像 Android 开发中组件 一样,React Native的组件也有生命周期(L...
  • xiangzhihong8
  • xiangzhihong8
  • 2017年01月08日 23:11
  • 3343

Android React Native组件的生命周期

和Android一样,React的组件也有对应的生命周期。Android React Native组件的生命周期可以总的概括为下面这一张图。可以把组件生命周期大致分为三个阶段: 第一阶段:是组件第一次...
  • sbsujjbcy
  • sbsujjbcy
  • 2015年11月19日 13:15
  • 4806

Vue组件和Route的生命周期详解

先讲点实际的 实用点的钩子: Created:vue实例被生成后的一个生命周期钩子函数。(页面初始化数据加载一般写这里); beforeCreate:给个loading界面 created撤销l...
  • huangpb123
  • huangpb123
  • 2017年12月04日 09:59
  • 158

flex_探究Flex组件生命周期;

特别说明=>本文转载自以下网址:     http://www.ibm.com/developerworks/cn/web/1011_simq_flexlifecycle/index.html?ca...
  • cenyebao
  • cenyebao
  • 2012年04月27日 15:02
  • 3478

套在ViewPagerz中的Fragment在各种状态下的生命周期

(感谢hdszlk的实测) 1.一直以来的疑问 Fragment在ViewPager到底经历了哪些生命周期方法?到底发生了什么? 常会TabLayout和ViewPager配合起来使用,针对...
  • jemenchen
  • jemenchen
  • 2016年09月24日 00:40
  • 3107
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android中各种组件的生命周期
举报原因:
原因补充:

(最多只允许输入30个字)