2014-04-19 81 views
0

在Android中,如果我使用隱式意圖從應用程序發送意圖,並且有兩個服務具有匹配的意圖過濾器,哪個服務將被調用?Android多服務匹配意圖

我知道的活動,用戶將被要求通過彈出窗口的選擇。 Android如何在服務中做出決定?

謝謝。

回答

2

報價myself

另外,如果有要求,支持安裝在設備上的兩個(或更多)的服務發生了什麼相同的<intent-filter>,但有不同的包名稱?您可能會認爲這會在安裝時失敗,就像使用重複權限的提供商那樣。唉,事實並非如此。相反,再一次,「贏」的第一個。

所以,如果我們有BadServiceGoodService,既響應相同<intent-filter>,和客戶端應用程序試圖通過明確意圖匹配的是<intent-filter>,它實際上可能與BadService溝通,簡單地傳達給GoodService因爲BadService安裝第一。用戶無視這一點。

這個故事的道德:不要使用隱含Intents與服務。

+0

那麼基本上它的安裝順序是? – Jake

+0

這與服務有關,但現在我也很好奇Android中是否還有其他類似的情況。你知道其他人嗎? – Jake

+1

@Jake:實際上,我應該鏈接到[稍後的博客文章](http://commonsware.com/blog/2013/11/07/troubling-tale-android-priority.html)。第一個決勝者是'android:priority',儘管這是沒有記錄的服務。安裝順序是第二個決勝盤。在這方面,服務有點像有序的廣播,第一個接收者總是中止廣播。 – CommonsWare

1

他們會考慮優先級:

<intent-filter android:icon="drawable resource" 
       android:label="string resource" 
       android:priority="integer" > 
    . . . 
</intent-filter>