2011-01-06 2 views

ответ

0

Вам следует отменить регистрацию, если вы больше не хотите или не можете получать трансляции.

21

http://developer.android.com/reference/android/content/BroadcastReceiver.html

«Вы можете динамически зарегистрировать экземпляр этого класса с Context.registerReceiver() или статически публиковать реализацию через тег в вашей AndroidManifest.xml. Примечание: Если регистрации приемника в вашей деятельности. onResume(), вы должны отменить регистрацию в Activity.onPause(). (Вы не будете получать намерения при приостановке, и это сократит ненужные системные издержки). Не отмените регистрацию в Activity.onSaveInstanceState(). "

:) SDK - ваш лучший друг. Я бы сказал, сделайте то, что он говорит в SDK, если вам не понадобится приемник при паузе, но будьте осторожны. Вам нужно динамически регистрировать приемник или добавить его в AndroidManifest.xml лучше? Если вы положите получателя в манифест, вам не нужно будет беспокоиться о его регистрации/регистрации.

+1

Обратите внимание, что, начиная с Honeycomb, действие не может быть уничтожено до тех пор, пока не будет включено onStop, поэтому можно отменить регистрацию в onStop (с соответствующим регистром в onStart) вместо onPause. – Tom

4

До сих пор я испытал 2 случая динамического широковещательного приемника регистрирующие:

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

-> Затем вещательный приемник должен быть зарегистрирован в onResume и незарегистрирован в onPause. Нормальный случай, указанный в официальной документации (http://developer.android.com/reference/android/content/BroadcastReceiver.html).

  • Вы хотите радиовещательный приемник должен быть зарегистрирован, чтобы получить длительное действие было вызвано (скорее всего, услуга), и пользователь может в любое время приостановить деятельность (например, пользователь нажимает на кнопку питания).

-> Затем вещательный приемник должен быть зарегистрирован в onCreate и незарегистрирован в onDestroy (подтверждено How to unregister BroadcastReceiver). Если нет, то когда приложение будет приостановлено, метод onReceive() не будет вызываться.
Будьте осторожны, однако, onDestroy не может быть вызван (точка поднята в Android - When to Register/Unregister Broadcast Receivers created in an activity?), поэтому вам нужно будет убедиться, что он вызван в какой-то момент (операция завершена), не уверен, что это лучшая практика.

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

1

Когда вы повторно используете приемник вещания в методе «Создать», мне было бы лучше, если вы отмените регистрацию в onDestroy() method.it - ​​это просто метод переопределения, вызываемый, когда когда-либо ваше приложение будет уничтожено.

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