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

roid я зарегистрировал BroadcastReceiver в моем onCreate (). Где я должен отменить регистрацию, чтобы у меня не было утечки ресиверов?

Ответы на вопрос(4)

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

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

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

 Tom06 мар. 2012 г., 01:37
Обратите внимание, что, начиная с Honeycomb, действие невозможно убить до тех пор, пока не будет запущен onStop, поэтому можно отменить регистрацию в onStop (с соответствующим регистром в onStart) вместо onPause.

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

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

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

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

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

-> Тогда получатель трансляции должен быть зарегистрирован в onCreate и незарегистрирован в onDestroy (подтвержденоКак отменить регистрацию BroadcastReceiver). Если нет, то когда приложение будет приостановлено, метод onReceive () не будет вызываться.
Но будьте осторожны, onDestroy не гарантированно вызываетсяAndroid - Когда регистрировать / отменять регистрацию приемников вещания, созданных в действии?) поэтому вам нужно убедиться, что он вызывается в какой-то момент (задание выполнено), но не уверен, что это лучший метод.

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

Ваш ответ на вопрос