如何创建使用单独进程的Android活动和服务

如何创建使用单独进程的Android活动和服务,android,service,Android,Service,我有一个由活动和服务组成的Android应用程序。目前,它们都存在于同一个进程中并使用相同的堆,但我希望必须为服务分离进程/堆。我希望服务完全独立于活动,这样如果活动崩溃,它就不会影响服务。但是,我确实希望它们可以作为单个应用程序安装。这可能吗?绝对可能。请参见AndroidManifest.xml 引述: 要运行服务的进程的名称。通常,应用程序的所有组件都在为应用程序创建的默认进程中运行。它与应用程序包具有相同的名称。元素的流程属性可以为所有组件设置不同的默认值。但组件可以使用其自己的进程属

我有一个由活动和服务组成的Android应用程序。目前,它们都存在于同一个进程中并使用相同的堆,但我希望必须为服务分离进程/堆。我希望服务完全独立于活动,这样如果活动崩溃,它就不会影响服务。但是,我确实希望它们可以作为单个应用程序安装。这可能吗?

绝对可能。请参见
AndroidManifest.xml

引述:

要运行服务的进程的名称。通常,应用程序的所有组件都在为应用程序创建的默认进程中运行。它与应用程序包具有相同的名称。元素的流程属性可以为所有组件设置不同的默认值。但组件可以使用其自己的进程属性覆盖默认值,从而允许您将应用程序分布到多个进程中

如果分配给此属性的名称以冒号(“:”)开头,则会在需要时创建应用程序专用的新进程,并在该进程中运行服务。如果进程名称以小写字符开头,则服务将在该名称的全局进程中运行,前提是它具有这样做的权限。这允许不同应用程序中的组件共享一个进程,从而减少资源使用


仅当服务应由其他应用程序使用时,才需要IPC for services

在自己的进程中运行服务有一个小优点,即服务的垃圾收集器不会影响应用程序,并且如果单独运行,服务的内存占用会稍微小一些


如果您不需要其他应用程序使用该服务,请选择本地服务。或者,您仍然可以在自己的进程中运行服务,并使用与应用程序的不同通信,例如通过广播接收器。在我的Android服务教程中,我试图在以下链接下描述不同的方法:。

Nice@lyricsboy但有一个问题:在OP的场景中,当Android终止活动(因此终止应用程序)时,如果它在同一进程上,它是否也会终止正在运行的服务?这取决于服务如何启动(哪种模式)以及与内存相关的其他因素。您可以在以下位置找到更多详细信息:按元素您是指应用程序吗?。服务需要哪些权限才能在全球范围内运行?当调用活动被破坏时,(独立进程中的服务)不是防止服务调用其自己的onDestroy的唯一方法吗?您好,Vogella,请您解释一下我们需要“其他应用程序使用服务”的任何场景,我没有这个术语。感谢在单独的流程中运行服务有助于确保,如果主应用程序的流程终止,服务可以继续。所以这是非常有用的。在自己的进程中运行服务的另一个优点是,如果用户显式地结束应用程序进程,服务仍将继续运行。