一个进程的优先级跟它所包含的组件的状态相关。
一:前台进程
前台进程只要满足以下条件之一:
(1)该进程有一个Activity正在跟用户交互,即该Activity实例处于活动栈顶。
(2)该进程有一个BroadcastReceiver,并且正在调用它的onReceive()方法。
(3)该进程有一个Service,该Service是一个前台服务。
(4)该进程有一个Service,该Service跟一个正在与用户进行交互的Activity绑定。
(5)该进程有一个Service,该Service正在执行它的生命周期函数如onCreate()、onStart()、onDestroy()。
例子:比如用户正在操作某个APP,该APP的进程就是前台进程。
二:可见进程
前台进程只要满足以下条件之一:
(1)该进程有一个Activity是可见的,但不在栈顶,无法和用户进行交互。
(3)该进程有一个Service与一个可见的Activity绑定了。
例子:用户正在操作某个应用A,这时候弹出了其他应用B的小界面,并没有把之前的应用A界面完全遮挡住,则应用A的进程就是可见进程。
三:服务进程
该进程有一个Service,该Service没有绑定Activity(通过startService()启动),主要用来在后台运行一些逻辑。
例子:最常见的就是后台播放音乐,以及后台下载数据等等。
四:后台进程
该进程持有一个用户不可见的Activity,就属于后台进程。
例子:用户打开了一个应用A,然后又打开了一个应用B,应用A完全不可见,这时候应用A就是一个后台进程。
五:空进程
当一个进程不包含任何应用组件,就是一个空进程。空进程主要为了在下一次启动该进程组件时提高进程的启动速度。