в чем разница между sendStickyBroadcast и sendBroadcast на Android?
В чем разница между sendStickyBroadcast
и sendBroadcast
в Android?
- Добавьте флажок «Запомнить меня»
- регистрировать приемник в службе
- Как динамически удалять элементы из списка ListView при нажатии кнопки?
- Как я могу поддерживать состояние fragmentа при добавлении в задний стек?
- Связывание FirebaseRecyclerViewAdapter с булевой / строковой картой.
- Использование clipRect - объяснение
- эффект щелчка на кнопке на Android
- Использование Android Intent.ACTION_SEND для отправки электронной почты
Вот что говорит 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. Приличные трансляции не должны использоваться. Они не обеспечивают никакой безопасности (любой может получить к ним доступ), никакой защиты (любой может их изменить) и многих других проблем. Рекомендуемый шаблон – использовать нелипкую трансляцию для сообщения о том, что что-то изменилось, а другой механизм для приложений, чтобы получать текущее значение, когда это необходимо
Надеюсь, это поможет.