所谓应用程序的生命周期,是指应用程序进程从创建到消亡的整个过程。在 Android 中,多数情况下每个程序都是在各自独立的 Linux 进程中运行的。当一个程序或其某些部分被请求时,进程就“出生”;当该程序没必要继续运行且系统需要回收此进程所专用的内存时,该进程就“死亡”。因此,Android 程序的生命周期是由系统控制而非程序自身直接控制,这与桌面应用程序有一定的区別,桌面应用程序的进程也是在其他进程或用户请求时被创建,但经常在程序结束时执行一个特定的动作(如从 main 方法 return )而导致进程结束。
简而言之,Android 应用程序的生命周期是指在 Android 系统中进程从启动到终止的所有阶段,即 Android 程序启动到停止的全过程,程序的生命周期是由 Android 系统进行调度和控制的。 但由于手机的内存是存限的.随着打开的应用程序数量的增多,可能造成应用程序响应时间过长或系统假死的情况,因此在系统内存不足的情况下,Android 系统便会舍车保帅,选择性地来终止一些重要性较低的程序应用,以便回收内存供更重要的应用程序使用。
Android 根据应用程序的组件及组件当前的运行状态将所有的进程按重要性程度从高到低划分为5 个优先级:
- 前台进程
- 可见进程
- 服务进程
- 后台进程
- 空进程
前台进程
前台进程是指显示在屏幕最前端并与用户正在交互的进程,是 Android 系统中最重要的进程。前台进程包括以下4种情况:
- 进程中的 Activity 正在与用户进行交互
- 进城服务被 Activity 调用,并且该 Activity 正在与用户进行交互
- 进程服务正在执行生命周期中的回调方法,如
onCreat()
、onStart()
或onResume()
方法 - 进程的
BroadcastReceiver
正在执行onReceive()
方法
Android 系统在多个前台进程同时运行时,可能会出现资源不足的情况,此时可清除部分前台进程,以保证主要的用户界面能够及时反应
可见进程
可见进程是指部分程序界面能够被用户看见,却不在前台与用户交互,不能响应界面事件的进程。如果一个进程包含服务,且该服务正在被用户可见的 Activity 调用,则此进程同样被视为可见进程。
Android 系统一般存在少量的可见进程,只用在特殊的情况下,Android 系统才会为保证前台进程的资源而清除可见进程
服务进程
服务进程是指由 startService()
方法启动服务的进程。服务进程有以下特征:
- 没有用户界面
- 在后台长期运行
例如,MP3 播放器或后台上传下载数据的网络服务,都是服务进程
除非 Android 系统不能保证前台进程或可见进程所必要的资源,否则不会强行清除服务进程
后台进程
后台进程是指不包含任何已启动的服务,且没有任何可劲的 Activity 的进程。后台进程不直接影响用户的体验。 Android 系统中一般存在数量较多的后台进程,因此这些进程会被曝存在一个列表中,以保证在系统资源紧张是,系统会优先清除用户较长时间没有用到的后台进程
空进程
空进程是指不包含任何活跃组件的进程。通常保留这些空进程,是为了将其作为一个缓存,在其所属的应用组件下一次需要时,以缩短启动的时间
在系统资源紧张时,Android 系统首先会清除空进程,但为了提高Android 系统应用程序的启动速度,Android 系统会将空进程保存在系统内存中,当用户重新启动该程序时,空进程会被重新使用。