В чем разница между sendStickyBroadcast
и sendBroadcast
в Android?
В чем разница между sendStickyBroadcast
и sendBroadcast
в Android?
Вот что говорит Android SDKsendStickyBroadcast()
:
Выполните sendBroadcast (Intent), который является «липким», то есть намерение, которое вы отправляете, остается после завершения трансляции, чтобы другие могли быстро получить эти данные с помощью возвращаемого значения registerReceiver (BroadcastReceiver, IntentFilter). Во всем остальном это ведет себя так же, как sendBroadcast (Intent).
Одним из примеров липкой трансляции, отправляемой через операционную систему, является ACTION_BATTERY_CHANGED
. Когда вы вызываете registerReceiver()
это действие - даже с помощью null
BroadcastReceiver
- вы получаете Intent
последнюю трансляцию для этого действия. Следовательно, вы можете использовать это для определения состояния батареи без обязательной регистрации всех будущих изменений состояния батареи.
Типы : - локальный, нормальный, упорядоченный и липкий
Обычная трансляция
: - использовать sendBroadcast ()
: - асинхронная трансляция
: - трансляцию принимает любой приемник, а не какой-то определенный порядок
Заказанная трансляция
: - использовать sendOrderedBroadcast ()
: - синхронная трансляция
: - приемник принимает трансляцию в приоритетной базе
: - мы также можем просто прервать трансляцию в этом виде
Местное вещание
: - использовать, только если трансляция используется только внутри одного процесса
Липкая трансляция
: - нормальное широковещательное намерение больше не доступно после того, как оно было отправлено и обработано системой.
: - использовать sendStickyBroadcast (намерение)
: - соответствующее намерение является липким, то есть отправляемое вами намерение остается в силе после завершения трансляции.
: - из-за этого другие могут быстро получить эти данные через возвращаемое значение registerReceiver (BroadcastReceiver, IntentFilter).
: - кроме sendBroadcast (Intent).
источник
sendbroadcast()
- обычная трансляция, но мы можем установить и приоритет.sendstickybroadcast()
- намерение, переданное с этим, будет закреплено для будущих пользователей, которые регистрируются с помощью кода (динамические приемники). Трансляция, которая останется на Android, будет повторно доставляться или ретранслироваться по будущим запросам от любых широковещательных приемников.Когда кто-то отправляет липкую трансляцию с использованием,
sendstickyBroadcast(intent);
эта трансляция будет доступна для будущих пользователей, использующих динамические приемники.Но теперь вы не должны использовать
sendStickyBroadcast()
метод, который устарелИз документации Android:
Надеюсь, это поможет.
источник