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