2011-06-13 103 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個數據源需要彼此共享信息,然後將它們全部放在同一個服務中,否則將它們保持分開,因爲如果一個數據源關閉,它將使一個胖服務運行而不是僅僅一個燈服務。