2011-07-12 4 views
1

Я регистрирую приемник для захвата ConnectivityManager.CONNECTIVITY_ACTION в коде Т.е. я не регистрирую его в манифесте приложения. Все работает нормально, но я замечаю, что автоматически получаю трансляцию, как только регистрирую мой приемник, и, несмотря на то, что сеть уже включена.ConnectivityManager.CONNECTIVITY_ACTION, всегда передается при регистрации приемника?

Мой вопрос: могу ли я полагаться на эту автоматическую широковещательную рассылку, чтобы проверить, доступна ли сеть или нет, то есть явно не вызывают методы для проверки сети?

Я ожидал трансляции только тогда, когда сеть менялась, а не при регистрации моего приемника, однако тот факт, что я получаю трансляцию, очень полезен, но я могу полагаться на нее. Является ли это документированным действием?

ответ

2

Да, это называется sticky broadcasts. Принудительные трансляции отправляются получателю, как только вызывается registerBroadcast.

+0

Спасибо inazaruk. – Kerry

+3

Правильно ли я говорю, что в документе не упоминается тот факт, что эта конкретная передача является липкой? И это может означать, что мы не должны зависеть от этого. – BoD

+0

Что касается комментария BoD (я пришел к этому вопросу, задаваясь вопросом о том же)? Может быть, проблема в google (лучше изменить документы, чем поведение)? См. Также: http://stackoverflow.com/questions/16427812/broadcastreceiver-onreceive-triggered-when-registered –

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