首页 理论教育 应用程序的生命周期管理

应用程序的生命周期管理

时间:2023-06-27 理论教育 版权反馈
【摘要】:可以看出,Android程序的生命周期是由系统控制而非程序自身直接控制。换句话说,程序的生命周期就是在Android系统中应用程序进程从启动到终止的所有阶段,也就是Android程序启动到停止的全过程,而程序的生命周期是由Android系统根据一定策略进行控制的。图4-1Android系统进程的优先级下面根据Android系统中进程的优先级逐一介绍这些进程。

应用程序的生命周期管理

应用程序如同自然界中的生物一样,有自己的生命周期。应用程序的生命周期即程序的存活时间,也就是应用程序从创建到消亡的整个过程。Android是构建在Linux系统之上的开源移动开发平台,在Android系统中,多数情况下每个程序都是在各自独立的Linux进程中运行的。当一个程序或其某部分被请求时,它的进程就“出生”了;当这个程序没有必要再运行下去且系统需要回收这个进程的内存用于其他程序时,这个进程就“死亡”了。可以看出,Android程序的生命周期是由系统控制而非程序自身直接控制。

换句话说,程序的生命周期就是在Android系统中应用程序进程从启动到终止的所有阶段,也就是Android程序启动到停止的全过程,而程序的生命周期是由Android系统根据一定策略进行控制的。

手机电脑不同,手机的存储空间比电脑的存储空间小很多,一旦内存不足或非常紧张,就会导致运行在Android系统中的应用程序变得卡顿或无响应,这将影响手机的用户体验。因此当内存不足的时候,Android系统就会根据一定的策略来决定应该终止哪个进程。那么Android系统是根据什么来决定在内存不足的时候终止哪些进程,保留哪些进程呢?

Android系统根据每个进程中运行的组件及组件的状态把进程放入一个“重要性分级(Importance Hierarchy)”中。进程的类型按重要程度排序为:前台进程(Foreground)、可见进程(Visible)、服务进程(Service)、后台进程(Background)和空进程(Empty),如图4-1所示。

图4-1 Android系统进程的优先级

下面根据Android系统中进程的优先级逐一介绍这些进程。

1.前台进程

Android系统中最重要的进程显示在屏幕的最前端,与用户当前正在做的事情密切相关,负责与用户进行交互。

Android系统将在以下的任何一个条件下把进程移动到前台:

(1)进程正在屏幕的最前端运行一个与用户交互的活动。(www.xing528.com)

(2)进程有一个Service,并且在Service的某个回调函数内有正在执行的代码,如onCreate()方法、onStart()方法或onDestroy()方法。

(3)进程有一个Intent Receiver正在执行onReceive()方法。

2.可见进程

可见进程是一个可以被用户从屏幕上看到的Activity,但不在前台,用户无法与该进程进行交互,此时它的onPause()方法被调用。例如,如果前台的Activity是一个对话框,以前的Activity就隐藏在对话框之后,就会出现可见进程。可见进程非常重要,一般不允许被终止,除非是为了保证前台进程的运行而不得不终止它。

3.服务进程

服务进程拥有一个已经用startService()方法启动的Service,它没有用户界面,但可以在后台长期运行。虽然用户无法直接看到它,但它做的事情却是用户所关心的,比如后台的MP3播放或是后台网络数据的上传、下载。因此,除非内存不足以维持所有的前台进程和可见进程,Android系统将一直运行服务进程。

4.后台进程

后台进程拥有一个当前用户看不到的Activity,它的onStop()方法被调用。这些进程对用户体验没有直接影响。Android系统中通常有很多这样的进程在运行,因此,要将这些进程保存在一个列表中,以确保当内存不足的时候Android系统可以优先将这些进程终止,以便提供资源给高优先级的进程使用。

5.空进程

空进程是不拥有任何Activity的应用程序组件的进程。保留这些空进程的唯一原因是在下次应用程序的某个组件需要运行时,不需要重新创建进程,这样可以大大提高启动速度。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈