我有我的設備上安裝了兩個應用程序,每個組中的服務成分和這兩種服務具有相同的意圖過濾器的聲明,就像這樣:兩個服務具有相同意圖過濾
<intent-filter>
<action android:name="com.example.intent.action.SHOW"/>
</intent-filter>
我做起這樣的服務:
Intent intent = new Intent();
intent.setAction("com.example.intent.action.SHOW");
startService(intent);
我發現,這兩個服務的一個開始,但我不知道該怎麼happened.As我們知道,如果我們寫兩個活動具有相同意圖過濾器的聲明,一對話框將被強化,讓用戶選擇一個活動來完成action.What讓我感到困惑的是,Android如何選擇在具有相同意圖過濾器的這些人中開始的服務,做出這個決定的策略是什麼?
在此先感謝!
更新:
尤里是正確的,這裏是從框架/基/服務/ JAVA/COM /安卓/服務器/ PM/PackageMangerService.java代碼片段上ICS:
public ResolveInfo resolveService(Intent intent, String resolvedType,
int flags) {
List<ResolveInfo> query = queryIntentServices(intent, resolvedType,
flags);
if (query != null) {
if (query.size() >= 1) {
// If there is more than one service with the same priority,
// just arbitrarily pick the first one.
return query.get(0);
}
}
return null;
}
我們可以看到,如果有多個服務匹配請求的意圖,Android會隨意選擇一個啓動。但是,實際開始的服務是意想不到的。
你own.Create項目,形式試一試兩個服務具有相同intent.You會自動看看會發生什麼。所以試試看好友 – Sameer