我试图弄清楚编写一个
Android远程服务作为我的客户端应用程序的一部分(使用android:process =“:remote”)与使其成为一个单独的服务应用程序的利弊.
在这两种情况下,服务都将在其自己的独立进程中运行并拥有自己的堆等.但是,当我们将它作为一个单独的应用程序时,必须有一些差异,因为它将拥有自己的应用程序沙箱.我根据场景找到了许多它们的使用和首选方法的例子,但我试图理解它的内部技术细节.
有关此的任何良好信息来源?
编辑:
如果服务和客户端进程在同一个应用程序中运行,那么对应用程序对象/上下文的影响是什么.它会被其中一个进程覆盖吗?或者每个进程都有两个应用程序对象,这些应用程序对于一个应用程序来说听起来不正确.
解决方法
您的问题之前已得到部分解答.点击这里:
> using android:process=”:remote” recreates android Application object
但是如果你仍然想到在后台运行某些东西的想法,你可以看一下这个参考:
> Developing an App with a Background Service
让事情在背景上运行显然不是一个好选择.除非你出于任何原因真的需要它.因此,请注意不要使用用户自己意愿无意识激活的不必要的后台服务来骚扰用户.在这种情况下,制作单独的应用程序或用户将激活的某种功能是一条更智能,更安全的道路.
如果您需要能够在remote processes编写可以与客户端执行复杂通信的服务(除了使用Context.startService向其发送命令之外),那么您可以使用Messenger类而不是编写完整的AIDL文件.如果您只需要远程服务,则应遵循此tutorial.