Android

Android的进程管理机制

2016-03-15  本文已影响393人  自己找知己

Linux系统对进程的管理方式是一旦进程活动停止,系统就会结束该进程。Android系统虽基于Linux,但在进程管理上,采取了另外一种机制。当当前进程活动停止时,系统并不会立即结束当前进程,而是会将该进程保存在内存中,以后的某个时间,一旦进程开始活动,系统又可以立即启动该进程。

Android系统中定义了6种不同等级的进程级别。分别是前台进程,可见进程,次要服务,后台进程,内容供应节点,空进程。

前台进程:优先级最高的进程,系统首要的目标和任务就是满足前台进程的需求。

可见进程:不在前台,但是可见的一些进程。比如widget组件,输入法等。

次要服务:

后台进程:通常的理解就是我们按home键进行应用的切换就会将当前的应用由前台进程变成后台进程。

内容供应节点:没有程序实体,提供内容供别的应用进行使用

空进程:没有任何东西在内运行的进程,有些程序,比如BTE,在程序退出后,依然会在进程中驻留一个空进程,这个进程里没有任何数据在运行,作用往往是提高该程序下次的启动速度或者记录程序的一些历史信息。这部分进程无疑是应该最先终止的。

在程序中就用oom_adj变量的数值来表示进程的级别,对应其重要程度,每个进程在被Zygote进程孵化出来的时候都有oom_adj变量表示进程的级别,并且在运行的过程中通过改变该进程的值来表示该进程的优先级。系统就是根据各个进程的oom_adj值的大小来判断进程间的优先级的。一般的,前台进程的优先级为0,后台进程的优先级为16,最小的优先级进程为-17,数值范围就是-17至16。

每个应用在启动的时候,Zygote进程都会孵化出一个新进程来运行应用程序,每个进程都对应自己唯一的虚拟机实例,如果应用进程一旦挂掉或者崩溃,那么死掉的仅仅是当前应用的进程,不会影响整个系统的运行。

上一篇下一篇

猜你喜欢

热点阅读