【发布时间】:2015-06-27 06:57:26
【问题描述】:
当我们启动服务(运行时间较长的操作)时,我们可以为服务分配新的进程 ID 吗? ...或...强制相同的默认进程 id(Linux 内核在启动时分配给应用程序)由操作系统分配?
【问题讨论】:
当我们启动服务(运行时间较长的操作)时,我们可以为服务分配新的进程 ID 吗? ...或...强制相同的默认进程 id(Linux 内核在启动时分配给应用程序)由操作系统分配?
【问题讨论】:
对于需要与应用程序不同的进程 ID 的服务,您可以使用 android:process 属性。
根据安卓docs,
如果分配给此属性的名称以冒号 (':') 开头,则 在需要时创建应用程序专用的新进程 并且服务在该进程中运行。
这样,当你的服务被创建时,Android 系统应该在不同的进程中以不同的 PID 运行它。
要交叉检查/验证您的服务确实以不同的 pid 运行,您可以使用来自 adb shell 的 ps 命令或使用 DDMS 来查看您的服务是否以不同的进程 id 运行。
附带说明:在自己的进程中运行服务有一个小优点,即服务的垃圾收集器不会影响您的应用程序,并且如果单独运行,服务的内存占用会更小。
参考:Android - How to decide whether to run a Service in a separate Process?
【讨论】: