Android进程优先级

1. 概述

当系统内存不足时,Android系统将根据进程的优先级选择杀死一些不太重要的进程,优先级低的先杀死。进程优先级由高到低排列如下:

a. 前台进程

b. 可见进程

c. 服务进程

d. 后台进程

e. 空进程

2. 前台进程

前台进程是指正在与用户进行交互的进程,是最高优先级进程,判断为前台进程的因素有以下这些:

1. 处于正在与用户交互的activity

2. 与前台activity绑定的service

3. 调用了startForeground()方法的service

4. 正在执行oncreate(),onstart()方法的 service。

5. 进程中包含正在执行onReceive()方法的BroadcastReceiver。

系统中的前台进程并不会很多,而且一般前台进程都不会因为内存不足被杀死。特殊情况除外。当内存低到无法保证所有的前台进程同时运行时,才会选择杀死某个进程。

3. 可见进程

可视进程一般也不会被系统杀死,除非为了保证前台进程的运行不得已而为之。判断为可视进程的因素有以下这些:

1. 为处于前台,但仍然可见的activity(例如:调用了onpause()而还没调用onstop()的activity)。典型情况是:运行activity时,弹出对话框(dialog等),此时的activity虽然不是前台activity,但是仍然可见。

2. 可见activity绑定的service。(处于上诉情况下的activity所绑定的service)

4. 服务进程

没有可见界面仍在不断的执行任务的进程,除非在可视进程和前台进程紧缺资源(如:内存资源)才会被终止。判断为服务进程的因素有以下:

1. 包含除前台进程和可视进程的service外的service的进程

5. 后台进程

通常系统中有大量的后台进程,为了保证前台进程,可视进程,服务进程的运行,系统随时有可能杀死一个后台进程,终止后台进程不会影响用户体验。 判断为后台进程的因素有以下:

1. 不可见的activity(调用onstop()之后的activity)

6. 空进程

为了改善整个系统的性能,android经常在内存中保留那些已经走完生命周期的应用程序。android维护这些缓存来改善应用程序重新启动的时间。这些进程在资源需要的时候会被杀掉。当一个进程被杀掉,进程保留,变成空进程。系统会杀死空进程,但不会造成影响。

7. 注意

如果一个进程同时满足上述优先级中的多个等级条件,android系统会优先选取其中最高的等级作为该进程的优先级。

如果一个进程为另外一个进程提供服务,那么这个进程的优先级不会低于享受服务的进程。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值