作为一个多任务的系统,Android 系统当然能够尽可能长的保留一个应用进程,但是由于新的或者更重要的进程需要更多的内存,系统不得不逐渐终结老的进程来获取内存。为了声明哪些进程需要保留,哪些需要kill,系统根据这些进程里面的组件以及这些组件的状态为每个进程生成了一个“重要性层级” 。处于最低重要性层级的进程将会第一时间被清除,接着时重要性高一点,然后依此类推,根据系统需要来终结进程。

在这个重要性层级里面有5个等级。下面按照重要性排序展示了不同类型的进程(第一种进程是最重要的,因此将会在最后被kill):

Android中进程优先级顺序如下:

第一高:前台进程 (Foreground 进程)

前台进程是Android系统中最重要的进程,是与用户正在交互的进程。(当前处于最前端的activity,也就是Android最后考虑杀死的对象。一般来说,前台进程Android系统是不会杀死的。)

第二高:可见进程 (Visible 进程)

可见进程指部分程序界面能够被用户看见,却不在前台与用户交互。可以理解为当前屏幕上可以看到的activity,例如显示一个对话框的activity,那么对话框变成了前台进程,而调用他的activity是可见进程,但并不是前台的。

第三高:服务进程 (Service 进程)

一个包含已启动服务的进程就是服务进程,服务没有用户界面,不与用户直接交互,但能够在后台长期运行,提供用户所关心的重要功能。亦即Service,当系统资源不足时,系统可能会杀掉正在执行任务的Service。因此在Service执行比较耗时的操作,并不能保证一定能执行完毕。

第四高:后台进程 (Background 进程)

如果一个进程不包含任何已经启动的服务,而且没有用户可见的Activity,则这个进程就是后台进程。(包含不可见的Activity,即跳转到其他activity后,由于资源不足,系统会将原来的activity杀死(即跳转的来源)。)

第五高:空进程 (Empty 进程)

空进程是不包含任何活跃组件的进程。在系统资源紧张时会被首先清除。(这是Android系统优先杀死的,因为此时该进程已经没有任何用途。)

最新文章

  1. Python之路Day21-自定义分页和cookie
  2. 第一章:Symfony2和HTTP基本原理
  3. 添加已有项目到git rep
  4. URl中文转ASCII
  5. 【转】使用GDB调试Coredump文件
  6. C++----练习--string输入输出
  7. UESTC_传输数据 2015 UESTC Training for Graph Theory<Problem F>
  8. DS博客作业01--日期抽象数据类型设计与实验
  9. Mysql 设置远程连接
  10. 使用多线程提高Rest服务性能
  11. 大数据及Hadoop的概述
  12. linux下使用gcc编译运行C/C++程序
  13. andorid 全部对话框
  14. wamp配置虚拟路径(路径别名)
  15. Hibernate的配置中,c3p0连接池相关配置
  16. HLS
  17. BZOJ 1010: [HNOI2008]玩具装箱toy | 单调队列优化DP
  18. Python ssh 远程执行shell命令
  19. 为何url地址不是直接发送到服务器,而是被编码后再发送
  20. 聊聊、Zookeeper Linux 单服务

热门文章

  1. php进阶函数
  2. velocity模板引擎学习(1)
  3. SQL基础之select
  4. Java面试知识点总结
  5. jQuery操作单选按钮(radio)用法
  6. 完整的社交app源码android+laravel
  7. js中字符串和数组相互转化的方法
  8. floyd原理以及求最小环
  9. struts 2.3.14.1 包详解
  10. No goals have been specified for this build