2011-05-03 73 views
0

假設我有一個應用程序,其中有一個服務在循環中運行,此服務是由意向啓動的。然後我有另一個應用程序(相同,但具有不同的AppID)想要啓動相同的服務,而主要服務仍在運行。意圖如何處理? (注意:我希望這兩個服務同時運行...)intents如何處理同一類型的多個服務或類?

我在尋找一個可以理解的答案,它解釋了它後面的「如何」,而不是那麼多:「好吧,這段代碼需要照顧那個!」。如果你的回答不適合我的例子,這是沒有問題的,因爲我仍然非常新,我的問題可能會以奇怪的(甚至是愚蠢的)方式被問到,我事前道歉。

謝謝! - Bobby

回答

0

服務必須在AndroidManifest.xml中聲明:這指定了Service類。您可以使用明確的Intent(指定服務類(以及可選的組件名稱))或使用與將與服務關聯的IntentFilter匹配的Intent來啓動服務。

情況1使用明確的意圖。如果只有1個應用程序將該類註冊爲服務,那麼在第二個應用程序中,您將不得不使用帶有ComponentName的Intent,該組件名將啓動第一個應用程序的服務副本。在這種情況下,該服務類只有一個實例處於活動狀態。如果兩個應用都將該類註冊爲服務,則您的意圖將啓動該服務類的第二個實例。

案例2使用IntentFilter。如果兩個Service聲明都使用相同的IntentFilter,那麼IntentFilter的優先級就會啓動:具有更高優先級的Service聲明將被觸發,並且基本上總是會獲勝,因此您將只能運行該Service類的一個實例。如果這兩個服務聲明具有相同的優先級,那麼它將被使用。

在任何情況下,任何情況下(對於任何1個服務聲明)將會隨時運行該服務的至多一個副本。您可以通過「遠程」流程聲明發瘋,但這只是我想的。

+0

非常好的答案,謝謝Femi,這讓很多事情變得清晰!乾杯! :d – BobbyTee 2011-05-03 18:18:18

相關問題