2010-07-17 4 views
5

im пытается понять, какая разница между сервисом и широковещательным приемником, , как я вижу, они могут делать то же самое.разница между услугами и широковещательными приемниками

Например, у меня есть приложение: App1 , которые предоставляют услугу под названием ToastHelloWorld, которая просто создает Toast и stopSelf(). я разоблачить его в другие приложения, используя фильтр намерений с названием действия: «com.test.HelloToast»

Теперь у меня есть еще одно применение: App2 я хочу неявного использования службы с действием «com.test. HelloToast ", поэтому я вызываю startService (новое намерение (« com.test.HelloToast »));

и он работает.

Зачем использовать широковещательные приемники, когда я могу делать все с помощью служб и не имеет ограничения на ограничение выполнения 5 секунд ?.

Я знаю, что большинство «системных событий» выставляется через трансляции, но разве они не могут быть опубликованы как служебные намерения?

ответ

4

Трансляции намерения обычно доставляются до все BroadcastReceivers зарегистрировано для этого намерения. (Существует исключение с упорядоченными намерениями, когда получатель может прервать доставку для приемников с более низким приоритетом). Учреждения, которые запускают или связывают службы, отправляются только один, соответствующий экземпляру службы.

Некоторые трансляции намерения являются липкими. Это означает, что они могли быть отправлены в прошлом и будут доставлены, когда ваше приложение зарегистрирует приемник.

3

Служба используется, когда вы хотите что-то сделать в фоновом режиме, любой длительный процесс может быть выполнен с использованием службы в фоновом режиме. Например, вы хотите играть музыку, когда ваше приложение приближается. В этом случае служба будет работать в фоновом режиме с музыкой.

BroadcastReceiver используется, когда вы хотите запустить некоторые вещи или код во время какого-либо события. Например, событие может быть на Boot of Device. Если вы хотите что-то сделать, когда устройство загрузилось, дата и время изменились и т. Д.

+1

Вы также можете запустить сервис для загрузки устройства. –

3

Самое большое различие заключается в том, что BroadcastReceiver работает по основному потоку пользовательского интерфейса по умолчанию (вы можете указать другой поток), и, следовательно, это ограниченное 10-секундным правилом исполнения. С другой стороны, службы могут работать бесконечно, пока ОС не решит их убить.

Смежные вопросы