Что такое липкая трансляция?
Я наткнулся на этот термин в документации по Android с сопроводительным определением
Это широковещательные передачи, данные которых хранятся системой после их завершения, так что клиенты могут быстро извлекать эти данные, не дожидаясь следующего вещания.
Что это значит? Может ли кто-нибудь разработать его использование с конкретным примером? Я считаю, что мы должны запросить разрешение на использование этого намерения? Почему так?
<uses-permission android:name="android.permission.BROADCAST_STICKY"/> - Allows an application to broadcast sticky intents.
Ответы
Ответ 1
Пожалуйста, прочтите объяснение Марка Мерфи здесь:
в чем разница между sendStickyBroadcast и sendBroadcast в Android
Вот абстрактный пример того, как можно использовать липкую трансляцию:
Intent intent = new Intent("some.custom.action");
intent.putExtra("some_boolean", true);
sendStickyBroadcast(intent);
Если вы прослушиваете эту трансляцию в Замещенной активности (onPause), вы можете пропустить реальное событие. Это позволяет проверить трансляцию после ее увольнения (onResume).
EDIT: Подробнее о липких трансляциях...
Также проверьте removeStickyBroadcast(Intent)
, а на уровне API 5 +, isInitialStickyBroadcast()
для использования в приемнике onReceive
.
Надеюсь, что это поможет.
Ответ 2
Обратите внимание, что липкие трансляции тяжелы в системе и обескуражены. Пожалуйста, прочитайте примечание от hackbod в разделе 'Прикрепленные трансляции и Concurrency Параметры > в группе разработчиков Android.
@Shouvik, укажите точный сценарий, в котором вы собираетесь использовать StickyBroadcasts. Кто-то может предложить альтернативное решение.
Ответ 3
Значение липкой широковещательной передачи - это значение, которое было последним, и в настоящее время удерживается в липком кэше. Это не значение трансляции, которая была получена прямо сейчас. Полагаю, вы можете сказать, что это похоже на cookie-браузер, доступ к которому вы можете получить в любое время. Липкая трансляция теперь устарела:
Этот метод устарел на уровне API 21. Липкие трансляции должны не используется. Они не обеспечивают безопасность (любой может получить к ним доступ), нет защита (любой может их изменить) и многие другие проблемы. рекомендуется использовать нелипкую трансляцию, чтобы сообщить, что что-то изменилось, с другим механизмом для приложений для извлечения при необходимости.
Ответ 4
sendStickyBroadcast()
выполняет sendBroadcast(Intent)
, известный как липкий, то есть намерение, которое вы отправляете, остается после завершения широковещательной передачи, так что другие могут быстро извлекать эти данные через возвращаемое значение registerReceiver(BroadcastReceiver, IntentFilter)
. Другими способами это ведет себя так же, как sendBroadcast(Intent)
. Одним из примеров липкой передачи, отправленной через операционную систему, является ACTION_BATTERY_CHANGED
. Когда вы вызываете registerReceiver()
для этого действия - даже с нулевым значением BroadcastReceiver
- вы получаете намерение, которое было передано последним для этого действия. Следовательно, вы можете использовать это, чтобы найти состояние батареи, не обязательно регистрируясь для всех будущих изменений состояния батареи.
Ответ 5
Обычное широковещательное намерение недоступно после того, как система была отправлена и обработана. Если вы используете метод sendStickyBroadcast (Intent), Intent является липким, то есть Intent, который вы отправляете, остается после завершения трансляции.
вы ссылаетесь на мой блог: введите ссылку здесь