在不同的流程中运行服务有哪些优点和缺点?

时间:2013-12-18 11:41:04

标签: android service android-service

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

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

问题::

所以我想了解在不同流程中运行Service的优点和缺点。

2 个答案:

答案 0 :(得分:4)

脱离我的头顶......

下行:

  • 您必须使用进程间通信与之通信,这比与客户端在同一进程中的速度要慢。
  • 调试变得更加困难,因为现在可能需要附加一个不同的进程。
  • 如果崩溃,它会独立于主进程崩溃。有人可能会说这也是一个好处。需要考虑的事情。
  • 任何初始化代码都需要特别小心,例如在Application实例中。每个进程都有一个Application上下文的实例。因此,例如,如果您正在初始化类似GCM的内容,您可能希望确保仅在主进程中执行此操作。 (详见:http://developer.android.com/reference/android/app/Application.html

上行:

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

答案 1 :(得分:2)

Con :如果您想要更新值或与应用none of your values will get updated通信,则使用android:process=":myprocess"非常糟糕。
使用时要小心。 (It took me a 2 days to figure out)

Pro :在运行漫长流程时不会阻止该应用。