我试图找出将 android 远程服务编写为我的客户端应用程序的一部分(使用 android:process=":remote")与使其成为一个单独的服务应用程序的优缺点。
在这两种情况下,服务都将在自己单独的进程中运行并拥有自己的堆等。但是,当我们将其作为单独的应用程序时,必须存在一些差异,因为它将有自己的应用程序沙箱。我根据场景找到了许多关于它们的用法和首选方法的示例,但我试图了解它的内部技术细节。
有什么好的信息来源吗?
编辑: 如果服务和客户端进程在同一个应用程序中运行,会对应用程序对象/上下文产生什么影响。它会被其中一个进程覆盖吗?或者每个进程都有两个应用程序对象,作为一个应用程序的一部分听起来不正确。
最佳答案
您的问题之前已得到部分回答。在这里检查:
但如果您仍然考虑让某些东西在后台运行的想法,您可以看看这个引用资料:
让事情在后台运行显然不是一个好的选择。除非你出于任何原因真的需要它。因此,请注意不要使用非用户自愿激活的不必要的后台服务来打扰用户。在这种情况下,制作一个单独的应用程序或某种将由用户激活的功能是一条更明智、更安全的道路。
如果您需要能够编写一个可以与客户端进行复杂通信的服务 remote processes (不仅仅是使用 Context.startService 向它发送命令),然后您可以使用 Messenger 类而不是编写完整的 AIDL 文件。如果你只需要远程服务,你应该按照这个 tutorial .
关于应用程序内的 android 远程服务与单独的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21175021/