Две службы с одним и тем же фильтром намерений

У меня на моем устройстве установлено два приложения, каждый из которых имеет компонент службы, и эти две службы имеют одно и то же объявление фильтра намерений, например:

<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); 

Я обнаружил, что одна из этих двух служб началась, но я не уверен, как это произошло. Как мы знаем, если мы напишем два действия с тем же объявлением фильтра намерений, откроется диалоговое окно и позволит пользователю выбрать действие для завершения Действие. Что меня смутило, так это то, как Android выбирает услугу, которая будет запущена в тех, у кого есть те же фильтры намерений, какова стратегия принятия этого решения?

Заранее спасибо!

Обновить:
Юрий прав, вот фрагмент кода из frameworks / base / services / java / com / android / server / 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 будет произвольно выбирать один для запуска. Но, какая услуга будет фактически запущена, это неожиданно.

Если есть более одного Сервиса с одним и тем же фильтром намерений, тогда ОС Android случайно выбирает одну из этих Услуг и передает ей намерение.

Если есть более 1 Service с соответствующим IntentFilter, то будет выбран тот, который имеет наивысший приоритет. Если есть несколько служб, имеющих наивысший приоритет, то будет выбрана «случайная» служба.

Вот фрагмент кода, который гарантирует, что первый элемент имеет наивысший приоритет:

https://github.com/android/platform_frameworks_base/blob/master/services/java/com/android/server/IntentResolver.java#L320

Возможно ли иметь более 1 служебную обработку?

Intereting Posts
Как показать разные значки для строки состояния и панели уведомлений в Android? Как перейти к XML-ресурсам в Eclipse вместо R.java Дешевый Android 7-дюймовый планшет (800×480): неправильное соотношение сторон, круги выглядят как многоточие Android разрабатывает шрифт LCD Линейный градиент CSS3 не работает на Android. Текст Android для речи очень медленно инициализируется Как изменить значок приложения Android в Eclipse? Поддержка разделенного экрана в Android N + только на планшетах Расширенное определениеListView в xml Использование ParseFacebookUtils.logInWithReadPermissionsInBackground не сохраняет разрешения на использование Facebook Чтение сообщения NDEF из тега NFC из приложения для Android OpenCV FeatureDetector Как масштабировать / изменять размер текста в соответствии с TextView? Как настроить HTTP-прокси, например Fiddler2 или Charles Web Proxy, с последним эмулятором Android в Windows? Связь между фрагментами применяется к вложенным фрагментам?