Android系统会根据进程中当前活跃组件的重要性程度,尽可能地评估该进程的优先级。例如,如果一个进程中同时存在一个服务和一个可见的Activity,则该进程会被判定为可见进程,而非服务进程。
此外,进程的重要性还会受到其他依赖于它的进程的影响。一个为其他进程提供服务的进程,其优先级始终高于使用服务的进程。例如,进程A中的内容提供者为进程B中的客户端提供服务,或进程A中的服务被进程B中的组件绑定,则进程A的重要性至少与进程B相同。
由于运行服务的进程重要性高于后台Activity,因此建议使用服务来启动长时间运行的任务,而不是简单地创建一个线程。尤其是在处理时间比Activity自身存在时间更长的情况下,例如播放背景音乐或上传图片到服务器。使用服务可以确保操作至少拥有“服务进程”的权限,无论Activity处于何种状态。正如在广播接收器生命周期中提到的,这也是广播接收器使用服务而非线程处理耗时任务的原因。
暂无评论