当我们启动服务(更长时间运行的操作)时,我们可以为服务分配新的进程ID吗? ...或者......强制相同的默认进程ID(Linux内核在启动时分配给应用程序)由OS分配?
答案 0 :(得分:0)
对于需要与您的应用程序不同的进程ID的服务,您可以使用android:process
属性。
根据Android docs,
如果分配给此属性的名称以冒号(':')开头,则a 在需要时创建应用程序专用的新进程 并且该服务在该过程中运行。
这样,在创建服务时,Android系统应该在具有不同PID的不同进程中运行它。
要交叉检查/验证您的服务确实使用不同的pid运行,您可以使用ps
中的adb shell
命令或使用DDMS查看您的服务是否以不同的进程ID运行。
作为旁注:在自己的进程中运行服务具有以下优点:服务的垃圾收集器不会影响您的应用程序,并且如果单独运行,则服务的内存占用量会小一些。
参考:Android - How to decide whether to run a Service in a separate Process?