В чем разница между sendStickyBroadcast и sendBroadcast в Android - PullRequest
100 голосов
/ 06 апреля 2010

В чем разница между sendStickyBroadcast и sendBroadcast в Android?

Ответы [ 3 ]

117 голосов
/ 06 апреля 2010

Вот что говорит Android SDK о sendStickyBroadcast():

Выполнить sendBroadcast (Intent), который является «липким», что означает намерение вас отправляет остается после трансляция завершена, так что другие может быстро получить эти данные через возвращаемое значение registerReceiver (BroadcastReceiver, IntentFilter). Во всех других отношениях это ведет себя так же, как sendBroadcast (Intent).

Одним из примеров липкой трансляции, отправленной через операционную систему, является ACTION_BATTERY_CHANGED. Когда вы вызываете registerReceiver() для этого действия - даже с null BroadcastReceiver - вы получаете Intent, который был последним для этого действия. Следовательно, вы можете использовать это для определения состояния батареи без обязательной регистрации всех будущих изменений состояния батареи.

47 голосов
/ 17 февраля 2014

Типы : - Локальный, Обычный, Упорядоченный и Липкий

Обычная трансляция

: - использовать sendBroadcast ()

: - асинхронная передача

: - любой получатель получает трансляцию не определенного порядка

Заказная трансляция

: - использовать sendOrderedBroadcast ()

: - синхронная трансляция

: - приемник принимает вещание в приоритетной базе

: - мы также можем просто прервать трансляцию в этом типе

Местная трансляция

: - использовать только тогда, когда трансляция используется только внутри одного процесса

Sticky Broadcast

: - обычное намерение широковещания больше не доступно после того, как оно было отправлено и обработано системой.

: - использовать sendStickyBroadcast (Intent)

: - соответствующее намерение является липким, то есть отправляемое вами намерение остается после завершения трансляции.

: - благодаря этому другие могут быстро получить эти данные через возвращаемое значение registerReceiver (BroadcastReceiver, IntentFilter).

: - кроме того же, что и sendBroadcast (Intent).

9 голосов
/ 21 декабря 2015

sendbroadcast() - обычное вещание, но мы также можем установить приоритет.

sendstickybroadcast() - намерение, переданное с этим, останется неизменным для будущих пользователей, которые регистрируются через код (динамические получатели). Вещание, которое будет привязано к Android, и будет повторно доставлено или повторно передано в будущем на запросы от любых приемников вещания

Когда кто-то отправляет липкую трансляцию, используя sendstickyBroadcast(intent);, эта трансляция будет доступна для будущих пользователей, использующих динамические приемники.

Но теперь не стоит использовать sendStickyBroadcast() метод, который устарел

Из документации Android:

Этот метод устарел на уровне 21 API. не будет использоваться Они не обеспечивают безопасность (любой может получить к ним доступ), нет защита (любой может их изменить) и многие другие проблемы. Рекомендуемый шаблон - использовать незакрепленную трансляцию, чтобы сообщить, что что-то изменилось, с другим механизмом для приложений, чтобы получить текущее значение при необходимости

Надеюсь, это поможет.

...