将服务放在单独进程中和将其留在应用程序的主进程中有哪些实际区别?每种情况都可以用于什么?
如果一个服务正在主进程中运行,那么在您的应用程序崩溃时会停止该服务。将服务放入自己的进程中对于某些可以从不同应用程序使用的服务或应该独立于主要应用程序运行的服务是有意义的。
以下是来自Android开发者网站的引用。
请注意,服务(像其他应用程序对象一样)在其托管进程的主线程中运行。这意味着,如果您的服务将执行任何CPU密集型操作(例如MP3播放)或阻塞操作(例如网络),则应在其自己的线程中生成该工作。
Jake指出,您可以通过清单控制它正在运行的名称。但根据文档,以下是发现:
关于Service类的大多数混淆实际上都围绕着它不是什么:
- 服务不是一个独立的进程。服务对象本身并不意味着它在自己的进程中运行;除非另有规定,否则它将在与其所属的应用程序相同的进程中运行。
这很有趣,这里所说的是:
服务运行的进程名称。通常,应用程序的所有组件都在为应用程序创建的默认进程中运行。它与应用程序包具有相同的名称。元素的process属性可以为所有组件设置不同的默认值。但是,组件可以使用自己的process属性覆盖默认值,从而允许您将应用程序分布在多个进程中。