Как намерения обрабатывают несколько служб или классов одного типа? - PullRequest
0 голосов
/ 03 мая 2011

Скажем, у меня есть приложение, в котором в цикле работает служба, которая запускается намерением.Затем у меня есть другое приложение (такое же, но с другим AppID), которое хочет запустить тот же сервис, пока основной сервис все еще работает.Как намерения могут справиться с этим?(Примечание: я хочу, чтобы обе службы запускались одновременно ...)

Я ищу понятный ответ, который объясняет «КАК» за ним, а не так:того, что!".Это не проблема, если ваш ответ не соответствует моему примеру, так как я все еще ОЧЕНЬ нов, мой вопрос может быть задан странным (или даже тупым) способом, я заранее извиняюсь.- Бобби

1 Ответ

0 голосов
/ 03 мая 2011

Служба должна быть объявлена ​​в AndroidManifest.xml: здесь указывается класс Службы. Службу можно запустить с помощью явного намерения (с указанием класса службы (и, возможно, имени компонента)) или с помощью намерения, которое будет соответствовать фильтру IntentFilter, связанному со службой.

Случай 1 использует явное намерение. Если только 1 приложение регистрирует класс в качестве Сервиса, то во втором приложении вам нужно будет использовать Intent с ComponentName, который запустит первую копию приложения в сервисе. В этом случае только 1 экземпляр этого класса Service будет активным. Если оба приложения регистрируют класс как Сервис, ваше намерение запустит второй экземпляр этого класса Сервиса.

Случай 2 использует IntentFilter. Если оба объявления Service используют один и тот же IntentFilter, то включаются приоритеты IntentFilter: объявление Service с более высоким приоритетом срабатывает и по существу всегда побеждает, так что у вас когда-либо будет работать только 1 экземпляр этого класса Service. Если оба объявления Сервиса имеют одинаковый приоритет, то это бросок, который используется.

В любом случае (для любого 1 объявления Сервиса) в любое время будет работать не более одной копии этой службы. Вы можете сойти с ума с «удаленными» объявлениями процессов, но это все, я думаю.

...