2014-09-23 4 views
3

Я хочу иметь BroadcastReceiver, который должен быть активным навсегда (100%). Теперь, если у меня это зарегистрировано в манифесте Android, это будет так, или он будет убит, когда само приложение будет уничтожено каркасом Android?Жизненный цикл широковещательного приемника

Теперь у меня также есть служба, работающая на переднем плане все время. Будет ли это убедиться, что мое приложение никогда не уничтожается? И, в свою очередь, убедитесь, что мой ресивер, зарегистрированный в манифесте Android, останется активным навсегда.?

ответ

5

BroadcastReceiver (docs), который находится на манифесте всегда активен и не работает, даже если эта деятельность уже не работает (думать о приемниках для намерения действия android.intent.action.BOOT_COMPLETED, который вызывает каждый раз, когда телефон включен). Ресиверы, которые определены и зарегистрированы, динамически работают только при запуске приложения (например, LocalBroadcastManagerregisterReceiver(...)).

См receiver element documentation, который гласит:

Объявляет широковещательный приемник (а BroadcastReceiver подкласс) в качестве одного из компонентов приложения. Широковещательные приемники позволяют приложениям получать сообщения, которые передаются системой или другими приложениями , даже если другие компоненты приложения не работают .

Documentation about services говорит:

передний план представляет собой услугу, которая считается чем-то пользователь активно осознает и, таким образом, не является кандидатом для системы убить, когда мало памяти

Поэтому вполне вероятно, что система не будет убивать запущенное приложение, к которому относится служба.

Таким образом, это похоже на возможность читать документацию, которая, по моему мнению, является исчерпывающей по поводу платформы Android.

+0

Просто хочу добавить, что в более поздних версиях Android BroadcastReceivers в манифесте неактивны, пока приложение не запустится хотя бы один раз. – Albin

+0

Поблагодарите fiipi за точный ответ. Я прошел через документы, но документы увеличиваются в размерах каждый день, и добавляется много ненужной информации. Я сравниваю это с очень оригинальными документами, которые были очень ясными. Я также упомянул об этом в своем вопросе, но он был отредактирован :) Спасибо Еще раз. –

+0

Есть ли способ отключить/повторно включить статически зарегистрированный транслятор? Я хочу получать уведомления, когда проверка wifi завершена, но только когда в моем приложении включены определенные переключатели. Кажется, слишком сложно регистрировать статически, так что onReceive() запускается каждый раз, когда проверка завершается ~ 10-20 секунд, даже если переключатель в приложении означает, что я не предпринимаю никаких действий. – BoomShaka

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