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

chr*_*ris 15 service android

我有一个包含活动和服务的Android应用程序.目前它们都存在于同一个进程中并使用相同的堆但我想要为服务分离进程/堆.IE浏览器.我希望服务完全独立于活动,这样如果活动崩溃,它将不会影响服务.但是,我希望它们可以作为单个应用程序安装.这可能吗?

lyr*_*boy 22

绝对有可能.查看in 的process属性serviceAndroidManifest.xml

http://developer.android.com/guide/topics/manifest/service-element.html

报价:

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

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


vog*_*lla 5

只有当服务应该由其他应用程序使用时,才需要用于服务的IPC.

在自己的进程中运行服务具有以下优点:服务的垃圾收集器不会影响您的应用程序,并且如果单独运行,则服务的内存占用量会小一些.

如果您不需要其他应用程序使用该服务,则更喜欢本地服务.或者,您仍然可以在自己的过程中运行服务,并使用与您的应用程序的不同通信,例如通过广播接收器.我尝试在以下链接中描述Android服务教程中的不同方法:活动和服务通信.