前台进程服务和可见进程服务有什么区别?
文档说:
如果满足以下任何条件,则进程被视为前台进程:
...
它包含与用户正在与之交互的操作相关联的服务。
它包含一个“在前台”运行的服务,一个名为 startForeground() 的服务。
它包含一个执行生命周期回调(onCreate()、onStart() 或 onDestroy())之一的服务。
...
和
如果满足以下任何条件,则认为进程可见:
...
它包含与可见或前台活动相关的服务。
我不清楚这些服务之间有什么区别,tk。为了使进程被认为是可见的,该服务必须与“可见活动(1)或前台活动(2)”相关联,但即使对于前台进程,它也被写入“它包含与活动,用户与之交互”(它 = 1?)或“在前台运行”(它 = 2?)。这不是一回事吗?
事实上,尽管翻译已发布在官方网站上,但它的可读性极差。此外,一般来说,理解前台进程和可见进程概念的含义是相当有问题的。我将尝试展示我对这部分文档的翻译版本,并添加少量内容。
前台进程是用户当前活动所需的进程。各种应用程序组件(Activity、Service、BroadcastReceiver)可以导致它们的包含进程被视为前台进程。如果满足以下任何条件,则进程被视为前台进程:
通常只有几个前台进程同时运行。它们仅作为最后的手段被销毁,如果剩下的内存太少以至于它们无法继续一起工作。通常此时设备已经进入内存分页状态,所以为了让用户界面能够响应用户动作,需要移除一些前台进程,需要注意的是,理论上所有可见的进程应该已经至此完成。
可见进程是不包含应用程序组件的进程,这些应用程序组件会使其成为前台进程,但会影响屏幕上的显示。如果满足以下任何条件,则认为进程可见:
可见进程被认为是关键进程,只有在必要时才会删除以保持所有前台进程运行。