`

Android应用程序的生命周期

阅读更多
Android的应用程序的生命周期,我相信这在以后的Android面试一定是经常考的题目,所以大家一点要重视哦!下面我简单说一下,希望对大家有一点帮助!

在大部份情况下,每个Android应用都将运行在自己的Linux进程当中。当这个应用的某些代码需要执行时,进程就会被创建,并且将保持运行,直到该进程不再需要,而系统需要释放它所占用的内存,为其他应用所用时,才停止。
        Android一个重要并且特殊的特性就是,一个应用的进程的生命周期不是由应用自身直接控制的,而是由系统,根据运行中的应用的一些特征来决定的,包括:这些应用对用户的重要性、系统的全部可用内存。
         对于应用开发者来说,理解不同的应用组件(特别是Activity、Service、Intent 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、后台进程是拥有一个用户不可见的Activity(onStop()方法已经被调用)的进程。这些进程不直接影响用户的体验。如果这些进程正确地完成了自己的生命周期(详细参考Activity类),系统会为了以上三种类型进程,而随时消毁这种进程以释放内存。通常会有很多这样的进程在运行着,因些这些进程会被保存在一个LRU列表中,以保证在内存不足时,用户最后看到的进程将在最后才被消毁。
      5、空进程是那些不拥有任何活动的应用组件的进程。保留这些进程的唯一理由是,做为一个缓存,在它所属的应用的组件下一次需要时,缩短启动的时间。同样的,为了在这些缓存的空进程和底层的核心缓存之间平衡系统资源,系统会经常消毁这些空进程。
      当要对一个进程进行分类时,系统会选择在这个进程中所有活动的组件中重要等级最高的那个做为依据。可以参考Activity、Service、 IntentReceiver文档,了解这些组件如何影响进程整个生命周期的更多细节。这些类的文档都对他们如何影响他们所属的应用的整个生命周期,做了详细的描述。
分享到:
评论

相关推荐

    android 应用程序的生命周期

    android 应用程序的生命周期 课件

    Android课程第一次实验报告_Andorid应用程序Activity生命周期.docx

    本实验报告将深入探讨Android应用程序,尤其是Activity、Service和Intent Receiver的生命周期,并解释如何正确管理这些组件以避免不必要的进程销毁。 首先,Android应用通常在独立的Linux进程中运行。当应用需要...

    Android应用开发期末考试题.doc

    Android 应用程序生命周期包括创建、启动、暂停、恢复和销毁等几个阶段。Activity 的生命周期方法包括 onCreate、onStart、onResume、onPause、onStop 和 onDestroy 等。 Android 应用程序调试技巧 Android 应用...

    Android应用程序开发

    ### Android应用程序开发知识点详解 #### 一、Android概述 Android是一种基于Linux内核的开源移动设备操作系统,由Google公司和开放手机联盟领导及开发。它主要用于触摸操作的手持设备上,如智能手机和平板电脑等...

    android 应用程序开发者 第4章 android 生命周期

    对android应用程序的生命周期有一个很详细的介绍,非常适合初学者

    Android应用程序生命周期中的活动与图标

    让应用程序生命周期中的交互方式与您的期望完全一致,并使用图标与操作栏引导用户使用UI导航与其他应用程序功能。如今移动设备的功能已经强大到难以置信,比众多开发人员用来编写首个程序的桌面计算机还要强大得多。...

    android实现离开应用程序

    1. **Android 应用程序生命周期**: Android应用的生命周期是由一系列的回调方法构成的,如`onCreate()`, `onStart()`, `onResume()`, `onPause()`, `onStop()`, 和 `onDestroy()`。理解这些方法的执行顺序和它们的...

    Android组件的生命周期

    Activity是Android应用程序中最常见的组件之一,其生命周期包括多个状态: - **Activity的基本状态**: - **Active状态**:运行在屏幕的前台,接受用户操作。 - **Paused状态**:失去焦点但对用户仍然可见。当...

    Android-Android轻松实现生命周期绑定

    在Android应用开发中,管理Activity和Fragment的生命周期是至关重要的,因为这直接影响到应用的性能、内存使用以及用户体验。"Android-Android轻松实现生命周期绑定"的主题着重于如何更有效地处理这些组件的生命周期...

    RxLifecycle:使用 RxJava 的 Android 应用程序生命周期处理 API-开源

    该库允许基于第二个生命周期流自动完成序列。 此功能在 Android 中很有用,因为不完整的订阅会导致内存泄漏。 你必须从一个 Observable 开始表示生命周期流。 然后使用 RxLifecycle 将序列绑定到该生命周期。 它假设...

    android Service的生命周期

    Service的生命周期是其核心概念,理解并掌握Service的生命周期对于编写高效、稳定的Android应用至关重要。 Service的生命周期主要分为两个启动模式:bindService和startService。这两种方式对Service的生命周期有着...

    Android生命周期Demo

    在Android应用开发中,了解和掌握Android生命周期是至关重要的,因为这直接影响到应用程序的性能、稳定性和用户体验。本文将深入探讨“Android生命周期Demo”,并基于《第一行代码》这本书中的讲解,帮助新手开发者...

    Android应用源码完全退出程序的方法-IT计算机-毕业设计.zip

    本项目提供了一个Android应用源码示例,适用于毕业设计或深入理解Android应用程序生命周期的学习。下面将详细讲解如何在Android中实现完全退出程序。 首先,了解Android应用的基本结构。一个Android应用通常由一个...

    Android程序研发源码Android Email程序源码.rar

    标题中的“Android程序研发源码Android Email程序源码.rar”表明这是一个关于Android平台上的电子邮件应用程序的源...同时,这也可以作为一个学习Android编程、深入理解Android应用程序生命周期和组件交互的好案例。

    Android-Disposer使用Android的生命周期轻松部署RxJava流

    Disposer是Android开发者用来与应用程序的生命周期紧密结合,确保在正确的时间自动处理RxJava流的订阅。 Disposer是由sellmair创建的一个库,其目标是简化在Android环境中使用RxJava时的生命周期管理。在标题...

    android应用开发揭秘

    3. **第3章:Android应用程序生命周期与活动管理** - 应用程序生命周期:详述应用和活动的各个状态(如运行、暂停、停止、销毁),以及如何在生命周期方法中处理关键事件。 - 活动管理:解释如何启动、切换、返回...

    Android生命周期的演示程序

    在Android应用开发中,Activity是用户界面的基本单元,它的生命周期是开发者必须要深入理解的重要概念。这个"Android生命周期的演示程序"旨在帮助我们直观地了解Activity从创建到销毁的各个阶段,以及在不同操作下...

    android-activity-lifecycle-demo:一个Android应用程序,展示何时进行各种活动生命周期回调

    Android生命周期演示展示android活动生命周期的android应用演示。 有两个活动, MainActivity.java和secondActivity.java 。 使用logcat和log类,当两个活动中的每个回调都被调用时,此应用向用户显示。 这两个活动...

Global site tag (gtag.js) - Google Analytics