2011-06-13 72 views
18

我对IntentService和服务之间的区别有点困惑。我知道IntentService有一个工作队列,但是在一个服务上使用多个IntentService有什么好处吗?多意向服务或一个服务

下面是我的意思的例子。假设我希望我的应用程序从3个来源提取数据。我应该启动一个运行三个线程的服务,每个线程从各自的源代码中提取?或者我应该启动三个单独的IntentServices?

回答

11

IntentService只是一个方便的类,用于编写生产者 - 消费者模式中的工作人员的服务。它们是旨在连续执行各种任务然后停止的服务。服务不一定是IntentServices,例如必须保持活动的服务,如守护进程。

所以你应该怀疑你的服务是否接近工作者线程,如果是的话,使用IntentServices,否则就是从Service派生。

你的第二个问题是是否将所有3个服务分组在一个3合1服务中。答案是这取决于你如何使用你的数据源:如果你完全使用它们,那么将它们分组在一个服务中。如果单独使用它们,则可以为每个服务创建一项服务,以便在只使用一个数据源而不使用另一个数据源时提供较轻的服务。但是如果你使用全部3个数据源,每个数据源都在一个服务中,那么它将比使用单一服务更重。

6

它的我的理解是,intentService和Service之间的区别在于intentService会产生一个工作线程来运行它,而一个Service在主服务进程的主线程中运行。此外,intentService将在工作完成时自行停止,而Service将继续运行,直到stopSelf或stopService被调用。

如果3个数据源需要彼此共享信息,然后将它们全部放在同一个服务中,否则将它们保持分开,因为如果一个数据源关闭,它将使一个胖服务运行而不是仅仅一个灯服务。