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

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

Solutions Collecting From Web of "В чем разница между sendStickyBroadcast и sendBroadcast в Android?"

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

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

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

Типы : – местный, нормальный, упорядоченный и липкий

Нормальная трансляция

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

: – асинхронное вещание

: – любой получатель получает широковещательную передачу не в определенном порядке

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

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

: – синхронное вещание

: – приемник получает широковещательную передачу в приоритетной базе

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

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

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

Важная трансляция

: – нормальное назначение трансляции больше не доступно после того, как система была отправлена ​​и обработана.

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

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

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

: – кроме этого, как sendBroadcast (Intent).

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

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

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

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

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

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

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