陈斌彬的技术博客

Stay foolish,stay hungry

Android应用程序进程生命周期详解

第一:前台进程

这样的进程拥有一个在屏幕上显示并且和用户交互的Activity,或者它的一个IntentReciver正在运行。这样的进程等级最高,系统不会主动去销毁它。除非达到万不得已的情况,比如内存非常低,溢出!

第二:可见进程

可在屏幕上显示但不在前台运行,比如一个前台进程以对话框的形式显示在该进程前面。这样的进程往往在屏幕上显示暗色,后台依然有服务运行,处于暂停状态,等待和用户交互。这样的进程也非常重要。除非内存过低。系统才会为满足所有前台进程的运行去销毁可见进程

第三:服务进程

屏幕不可见,但是在后台持续运行,比如音乐播放,后台数据下载等。这样的进程对用户来说也是非常有用的,所以只有当没有足够的内存运行前台进程和可见进程的时候才会去销毁服务进程。

第四:后台进程

屏幕不可见,没有任何服务运行。后台进程是运行一个当前不可见的Activity(这个Activity处于onStop()),对用户体验没有影响。当以上三种进程不满足运行状态时,系统会根据最近使用,最后停止的原则来销毁这样的进程。

第五:空进程

空进程就是这个进程里边没有任何的活动组件,维持这种进程的原因是作为一个缓存当一个组件启动是加快启动速度。系统为了平衡进程缓存和核心缓存会停止这些空进程。

最后一点一个进程的重要性也会因为其他进程的依赖而提高。一个进程不能比他所服务的进程重要性地,比如一个A进程的service绑定一个B进程的Activity。那么A进程的重要性不能比B低,甚至要高。比如后台音乐播放或者下载图片,使用服务来保证这个任务的至少是服务的重要性。所以往往需要长时间运行的最好放在service里边,而不是放到线程里边。