Android中级教程之--------Android应用程序的生命周期(一定要理解,面试会问的哦!)

原创 2009年12月06日 21:11:00

Android的应用程序的生命周期,我相信这在以后的Android面试一定是经常考的题目,所以大家一点要重视哦!下面我将图文双线程,希望对大家有一点帮助!

 

首先我们看一下Android应用程序的生命周期图:

 

 

 

        在大部份情况下,每个Android应用都将运行在自己的Linux进程当中。当这个应用的某些代码需要执行时,进程就会被创建,并且将保持运行,直到该进程不再需要,而系统需要释放它所占用的内存,为其他应用所用时,才停止。
        Android一个重要并且特殊的特性就是,一个应用的进程的生命周期不是由应用自身直接控制的,而是由系统,根据运行中的应用的一些特征来决定的,包括:这些应用对用户的重要性、系统的全部可用内存。
         对于应用开发者来说,理解不同的应用组件(特别是ActivityServiceIntent Receiver)对应用进程的生命周期的影响,这是非常重要的。如果没有正确地使用这些组件,将会导致当应用正在处理重要的工作时,进程却被系统消毁的后果。
        对于进程生命周期,一个普遍的错误就是:当一个Intent Receiver在它的onReceiveIntent()方法中,接收到一个intent后,就会从这个方法中返回。而一旦从这个方法返回后,系统将会认为这个Intent Receiver不再处于活动状态了,也就会认为它的宿主进程不需要了(除非宿主进程中还存在其它的应用组件)。从而,系统随时都会消毁这个进程,收回内存,并中止其中还在运行的子线程。问题的解决办法就是,在IntentReceiver中,启动一个Service,这样系统就会知道在这个进程中,还有活动的工作正在执行。
         为了决定在内存不足情况下消毁哪个进程,Android会根据这些进程内运行的组件及这些组件的状态,把这些进程划分出一个“重要性层次”。这个层次按顺序如下:
       1、前端进程是拥有一个显示在屏幕最前端并与使用者做交互的Activity(它的onResume已被调用)的进程,也可能是一个拥有正在运行的IntentReceiver(它的onReceiveIntent()方法正在运行)的进程。在系统中,这种进程是很少的,只有当内存低到不足于支持这些进程的继续运行,才会将这些进程消毁。通常这时候,设备已经达到了需要进行内存整理的状态,为了保障用户界面不停止响应,只能消毁这些进程;
      2、可视进程是拥有一个用户在屏幕上可见的,但并没有在前端显示的Activity(它的onPause已被调用)的进程。例如:一个以对话框显示的前端activity在屏幕上显示,而它后面的上一级activity仍然是可见的。这样的进程是非常重要的,一般不会被消毁,除非为了保障所有的前端进程正常运行,才会被消毁。
       3、服务进程是拥有一个由startService()方法启动的Service的进程。尽管这些进程对于使用者是不可见的,但他们做的通常是使用者所关注的事情(如后台MP3播放器或后台上传下载数据的网络服务)。因此,除非为了保障前端进程和可视进程的正常运行,系统才会消毁这种进程。
      4、后台进程是拥有一个用户不可见的ActivityonStop()方法已经被调用)的进程。这些进程不直接影响用户的体验。如果这些进程正确地完成了自己的生命周期(详细参考Activity类),系统会为了以上三种类型进程,而随时消毁这种进程以释放内存。通常会有很多这样的进程在运行着,因些这些进程会被保存在一个LRU列表中,以保证在内存不足时,用户最后看到的进程将在最后才被消毁。
      5、空进程是那些不拥有任何活动的应用组件的进程。保留这些进程的唯一理由是,做为一个缓存,在它所属的应用的组件下一次需要时,缩短启动的时间。同样的,为了在这些缓存的空进程和底层的核心缓存之间平衡系统资源,系统会经常消毁这些空进程。
      当要对一个进程进行分类时,系统会选择在这个进程中所有活动的组件中重要等级最高的那个做为依据。可以参考ActivityServiceIntentReceiver文档,了解这些组件如何影响进程整个生命周期的更多细节。这些类的文档都对他们如何影响他们所属的应用的整个生命周期,做了详细的描述。

 

深入理解远程调用之Hessian

-
  • 1970年01月01日 08:00

Android之Activity生命周期浅析(一)

Activity作为四大组件之一,出现的频率相当高,基本上我们在android的各个地方都能看见它的踪影,因此深入了解Activity,对于开发高质量应用程序是很有帮助的。今天我们就来详细地聊聊Act...
  • javazejian
  • javazejian
  • 2016-07-17 15:31:23
  • 51883

android 生命周期理解

android 生命周期图如下 android各生命周期触发时机: onCreate:create表示创建,这是Activity生命周期的第一个方法,也是我们在android开发中接触...
  • qq_27688259
  • qq_27688259
  • 2017-10-12 15:50:35
  • 84

Android之各生命周期的作用及意义

前言:Android开发最基础的是先用好Activity,而用好它必须先了解它的生命周期。这盘文章就是针对各个生命周期应该放置什么操作的问题,进行分析和解答。 一、初识: Activity的生命周...
  • csdn_aiyang
  • csdn_aiyang
  • 2017-06-05 12:54:48
  • 1971

Android - Acitivty生命周期 理解

1、Activity的四种状态 理解Activity的生命周期之前,先理解对android的生命周期的特点进行整理,从而归纳出的Activity的四种活动状态。 那么,通常来说,一个Activit...
  • ghost_Programmer
  • ghost_Programmer
  • 2015-11-18 20:45:33
  • 1766

android生命周期

今天体会最深的一点就是android的生命周期, 在Android中,进程的生命周期大多数时候是由系统管理的;也由于手机应用的一些 特殊性,所以我们需要更多的去关注各个Android Compone...
  • spy19881201
  • spy19881201
  • 2010-07-29 19:18:00
  • 4190

Android应用程序的生命周期

一个常见的进程生命周期漏洞的例子是Intent Receiver,当Intent Receiver在方法onReceiver()中接收到一个Intent时会启动一个线程,然后返回。一旦返回,系统将认为...
  • zizidemenghanxiao
  • zizidemenghanxiao
  • 2015-11-25 23:39:46
  • 750

Android activity的生命周期

 Android activity的生命周期activity类处于android.app包中,继承体系如下: 1.java.lang.Object 2.android.content.Context ...
  • hpoi
  • hpoi
  • 2009-10-03 11:38:00
  • 175971

基础总结篇之一:Activity生命周期

子曰:溫故而知新,可以為師矣。《論語》 学习技术也一样,对于技术文档或者经典的技术书籍来说,指望看一遍就完全掌握,那基本不大可能,所以我们需要经常回过头再仔细研读几遍,以领悟到作者的思想精髓。 近来回...
  • liuhe688
  • liuhe688
  • 2011-09-02 17:37:04
  • 520657

两分钟彻底让你明白Android Activity生命周期(图文)!

大家好,今天给大家详解一下Android中Activity的生命周期,我在前面也曾经讲过这方面的内容,但是像网上大多数文章一样,基本都是翻译Android API,过于笼统,相信大家看了,会有一点点的...
  • Android_Tutor
  • Android_Tutor
  • 2010-07-28 20:47:00
  • 264637
收藏助手
不良信息举报
您举报文章:Android中级教程之--------Android应用程序的生命周期(一定要理解,面试会问的哦!)
举报原因:
原因补充:

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