Android中进程生命周期的优先级

2019-12-10 19:16:12丽君
易采站长站为您分析Android中进程生命周期的优先级的相关资料,需要的朋友可以参考下  

学习Android最好的途径当然是强大的官方文档了,其中在Processes and Threads一节中对于进程生命周期淘汰优先级,有着详细的介绍。就不给大家转帖了,直接放译文吧,如下:

Android系统会尽量维持进程的存在,但毕竟资源有限,当系统资源告急的时候会淘汰一部分进程。淘汰顺序的凭据就是系统进程的优先级了,优先级越高越不容易被杀死,反之亦然。系统总共为进程分了五个优先级,如下

一、前台进程(进程满足如下任一条件即为前台进程):

1. 拥有 一个执行了onresume方法正在与用户交互(获得焦点)的Activity
2. 拥有一个service,这个Service跟正在与用户交互的Activity进行了绑定
3. 拥有一个Service,这个Service调用了startForeground()方法
4. 拥有一个正在执行onCreate()、onStart()或者onDestroy()方法中的任意一个的Service
5. 拥有一个正在执行onReceive方法的BroadcastReceiver

二、可见进程:

1. 拥有一个执行了onPause方法,但仍然可见的Activity
2. 拥有一个Service,这个Service跟一个可见的或前台的Activity绑定了

三、服务进程:

拥有一个通过startService方法启动的Service的进程

四、后台进程:

拥有一个后台Activity(onStop方法被调用)的进程

五、空进程:

没有拥有任何活动的应用组件的进程,也就是没有任何Service和Activity在运行

另外,还有一些需要补充的,当一个进程满足多个进程条件时,当然是取优先级更高的为准,比如一个进程同时满足前台进程和服务进程的条件,这个进程就是个前台进程,这点很好理解。另外,进程的优先级也不是一成不变的,而且有时候会随着一些相关的因素而发生改变;比如,某进程A满足前台进程的第二个条件,进程A拥有一个service,这个Service跟正在与用户交互的Activity进行了绑定;当这个Activity变成可见状态了,进程A便不再满足前台进程的条件,进而因满足可见进程的第二个条件,进程A变成了可见进程。总之,在掌握了基本概念之后,需要细心的分析具体的情况,方能得出正确的判断。