2012-03-31 3 views
12

Я немного смущен документацией о различных типах отправки трансляций на Android. Например, есть sendStickyBroadcast(), sendBroadcast(), sendOrderedBroadcast() и sendStickyOrderedBroadcast().различия между различными типами трансляций в android

В чем разница между липкой, обычной и упорядоченной трансляцией?

ответ

46

Вы можете сравнить липкую трансляцию с запиской. Кто-то отправляет его, и вы можете читать, когда вы проходите мимо/запускаете приложение - независимо от того, когда он был отправлен.

Приказанная передача - это как передача заметки - она ​​передается от человека/приложения к человеку/приложению. В любом месте в цепочке получатель может выбрать отмену трансляции, не позволяя остальной цепочке видеть ее.

Обычный широковещательный широковещательный широковещательный широковещательный широковещательный широковещательный широковещательный широковещательный широковещательный широковещательный журнал.

Там это изменение передач, которые разрешают только приемники зарегистрировано в запущенном приложении слушать их - то есть приемник в вашем AndroidManifest.xml будет не триггера для этих намерений.

+1

приятное объяснение! – Akhil

+0

очень хороший информация. –

26

Нормальные передачи: -Нормальные трансляции (отправленные с Context.sendBroadcast) полностью асинхронны. Все приемники широковещательной передачи выполняются в неопределенном порядке, часто в одно и то же время. Это более эффективно, но означает, что приемники не могут использовать результат или прервать API, включенные здесь.

Заказываемые радиопередачи: - Упорядоченная широковещательная рассылка - это тип широковещательной передачи, которая отправляется синхронно, то есть по одному для каждого слушателя.

Метод Android sendOrderedBroadcast относится к классу Context для Android, целью которого является передача на прослушивание приемников сериализованным образом и получение результата обратно к вызывающей активности. Я долго искал что-то вроде Android sendOrderedBroadcast, но не смог его найти. Другим ключевым преимуществом sendOrderedBroadcast является то, что мы можем установить приоритет BroadcastReceiver. Таким образом, все трансляторы BroadcastReceivers, прослушивающие эту конкретную широковещательную рассылку, получат определенную передачу в упорядоченном виде. Теперь, когда мы получаем широковещательные передачи упорядоченным способом, может существовать случай, когда вы хотите прервать поток приемников, угадать, что даже это можно сделать, abortBroadcast().

Липкие вещает: - Прикрепленного Broadcast является трансляцией, которая остается вокруг после момента его объявления в систему. Большинство трансляций отправляются, обрабатываются внутри системы и становятся быстро недоступными. Однако Sticky Broadcasts объявляет информацию, которая остается доступной за пределами того момента, когда они обрабатываются. Типичным примером является уровень широковещательной передачи батареи. В отличие от большинства трансляций, уровень заряда батареи можно получить в приложениях за пределами точки, в которой он был отправлен через систему. Это означает, что приложения могут узнать, какой была последняя передача на уровне батареи.

+0

Я думаю, вы можете сказать, что заказываемые трансляции синхронны, поскольку они отправляются слушателям по приоритету. Вызов по-прежнему остается асинхронным (в случае возникновения путаницы). – Alan

Смежные вопросы