2010-07-17 70 views
5

即時通訊試圖瞭解服務和廣播接收機之間的區別是什麼, 因爲我看到它們可以做同樣的事情。服務和廣播接收機之間的區別

例如,我有一個應用程序:App1 提供一個名爲ToastHelloWorld的服務,它只創建一個Toast和stopSelf()。 我使用意圖過濾器與動作的名稱暴露在其他應用程序:「com.test.HelloToast」

現在我有另一個應用:應用2 我想隱式使用與行動「com.test的服務。 HelloToast「,所以我打電話 startService(new Intent(」com.test.HelloToast「));

它的工作原理。

爲什麼我會使用廣播接收器時,我可以做所有的服務,並沒有限制5秒的執行限制?

我知道大多數「系統事件」是通過廣播公開的,但是它們不僅僅是作爲服務內容發佈嗎?

回答

4

廣播意圖通常發送到所有 BroadcastReceivers註冊該意圖。 (對於訂購意圖,例外情況是接收方可以中止對較低優先級接收方的交付)啓動或綁定服務的意向僅發送到一個匹配服務實例。

一些廣播意圖很粘。這意味着它們可能在過去發送過,並會在應用程序註冊接收器時發送。

3

當您想在後臺執行某些操作時使用服務,可以使用後臺服務完成任何長時間運行的進程。例如,您想在應用程序關閉時播放音樂。在這種情況下,服務將以音樂的背景運行。

當您想在某些事件中觸發某些內容或代碼時使用BroadcastReceiver。例如,事件可以在Boot of Device上。如果你想在設備啓動時執行某些操作,日期和時間等發生變化......

+1

您也可以在設備啓動時啓動服務。 – 2015-02-27 21:07:56

3

最大的區別在於BroadcastReceiver默認在主UI線程上運行(可以指定不同的線程),因此它是限於10秒的執行規則。另一方面,服務可以無限期地運行,直到操作系統決定殺死它們。