Что такое липкая трансляция?

Я наткнулся на этот термин в документации по 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, который вы отправляете, остается после завершения трансляции.

вы ссылаетесь на мой блог: введите ссылку здесь