Android 在不同的流程中运行服务的优点和缺点是什么?

Android 在不同的流程中运行服务的优点和缺点是什么?,android,service,android-service,Android,Service,Android Service,我想在我的应用程序的后台运行一个长时间运行的服务。所以我使用这个服务,但在服务中有一个名为android:process的标签,所以我的服务就像 <service android:name="com.purpleshade.services.ApplicationService" android:process=":myprocess"> 问题:: 因此,我想知道在不同的流程中运行服务的优缺点。我想知道的是 缺点: 您必须使用进程间通信来与它通

我想在我的应用程序的后台运行一个长时间运行的服务。所以我使用这个服务,但在服务中有一个名为
android:process
的标签,所以我的服务就像

<service
        android:name="com.purpleshade.services.ApplicationService"
        android:process=":myprocess">

问题::


因此,我想知道在不同的流程中运行
服务的优缺点。

我想知道的是

缺点:

  • 您必须使用进程间通信来与它通信,这比它与客户机处于同一进程时要慢
  • 调试变得更加困难,因为现在可能需要附加一个不同的进程
  • 如果它崩溃,它将独立于主进程崩溃。不过,有人可能会说,这也是一个有利因素。需要考虑的事情。
  • 在任何初始化代码中都需要特别小心,例如在应用程序实例中。每个进程都有一个应用程序上下文实例。因此,例如,如果您正在初始化GCM之类的东西,您可能希望确保只在主进程中进行初始化。(具体指:)
好处:

  • 我所能想到的唯一真正的好处,也是我唯一一次使用单独的进程,是获得一个全新的堆空间来独立于主进程工作。如果您需要此内存进行某些操作,此功能非常有用

Con:如果您想更新值或与应用程序通信,使用android:process=“:myprocess”
非常糟糕
使用时要小心


Pro:在运行长进程时不会阻止应用程序。

+1很好的解释..我们是否可以使用这两个不同的进程进行通信?这意味着将值从一个进程更新到另一个进程???@kalyanpvs抱歉,我不确定是否理解您的问题。请你重新措辞好吗?如果我有一个服务在另一个进程中连续运行..现在我想与另一个进程中的活动进行通信..这种通信是可能的吗?如果可能的话,那么如何@kalyanpvs啊!是的,这是可能的。您“绑定”到服务,这实际上为您提供了一个通信通道。在您的情况下,您可能会在活动中绑定和解除绑定您的服务。这里有一个完整的开发人员关于服务绑定的指南:@ ErcScLeNZ,另一个要考虑的是,SyrdPoad将不能在进程或本地广播之间工作,也不会共享。