В Android я зарегистрировал BroadcastReceiver в своем onCreate(). Где я должен отменить регистрацию, чтобы у меня не было просочившихся приемников?Когда нужно отменить регистрацию приемника вещания, зарегистрированного в onCreate?
ответ
Вам следует отменить регистрацию, если вы больше не хотите или не можете получать трансляции.
http://developer.android.com/reference/android/content/BroadcastReceiver.html
«Вы можете динамически зарегистрировать экземпляр этого класса с Context.registerReceiver() или статически публиковать реализацию через тег в вашей AndroidManifest.xml. Примечание: Если регистрации приемника в вашей деятельности. onResume(), вы должны отменить регистрацию в Activity.onPause(). (Вы не будете получать намерения при приостановке, и это сократит ненужные системные издержки). Не отмените регистрацию в Activity.onSaveInstanceState(). "
:) SDK - ваш лучший друг. Я бы сказал, сделайте то, что он говорит в SDK, если вам не понадобится приемник при паузе, но будьте осторожны. Вам нужно динамически регистрировать приемник или добавить его в AndroidManifest.xml лучше? Если вы положите получателя в манифест, вам не нужно будет беспокоиться о его регистрации/регистрации.
До сих пор я испытал 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?), поэтому вам нужно будет убедиться, что он вызван в какой-то момент (операция завершена), не уверен, что это лучшая практика.
Теперь почему это должно быть динамически зарегистрировано?
Если нет веских причин для этого вещательного приемника, то, вероятно, вы должны зарегистрировать его в файле манифеста с помощью фильтра правильного намерения, чтобы не беспокоить регистрацию/регистрацию.
Когда вы повторно используете приемник вещания в методе «Создать», мне было бы лучше, если вы отмените регистрацию в onDestroy()
method.it - это просто метод переопределения, вызываемый, когда когда-либо ваше приложение будет уничтожено.
- 1. Как отменить регистрацию широковещательного приемника в Android
- 2. Отменить регистрацию вещательного приемника в новом действии
- 3. Android - когда нужно отменить регистрацию broadCastListener для SCREEN_ON/OFF?
- 4. Когда нужно отменить регистрацию получателя LocalBroadcastManager?
- 5. Отменить регистрацию зарегистрированного события filewatcher не работает
- 6. как отменить регистрацию вещательного приемника в андроиде с помощью sinch?
- 7. Android: Использование вещания приемника
- 8. пользовательские разрешения приемника вещания
- 9. Мне нужно отменить регистрацию событий в asp.net
- 10. Android: ошибка приемника вещания
- 11. Почему и когда нужно отменить регистрацию контента в android
- 12. Когда нужно отменить регистрацию BroadcastReceiver? В onPause(), onDestroy() или onStop()?
- 13. Нужно ли отменить регистрацию EntityModifier в AndEngine?
- 14. Где/как отменить регистрацию широковещательного приемника в адаптере listview?
- 15. Ошибка при регистрации приемника вещания
- 16. Grails - Как отменить регистрацию уже зарегистрированного маршаллера объекта
- 17. Где отменить регистрацию приемника широковещания в пользовательском контроле
- 18. Как отменить регистрацию вещательного приемника в этом коде?
- 19. Необходимость отменить регистрацию широковещательного приемника, который не объявлен в манифесте
- 20. Как отменить регистрацию или обновление зарегистрированного приложения SharePoint
- 21. Android: когда нужно отменить регистрацию слушателя - onStop() или onDestroy()
- 22. Android-приложение-биллинг. Когда нужно отменить регистрацию ResponseHandler?
- 23. sendBroadcast без зарегистрированного приемника
- 24. Потрясающая галерея + поведение приемника вещания
- 25. Как удалить или отменить регистрацию зарегистрированного пользовательского элемента?
- 26. Должен ли я всегда отменить регистрацию локального вещательного приемника
- 27. Увеличение скорости приемника намерений вещания
- 28. Показать закусочную от приемника вещания?
- 29. Когда/как мне отменить регистрацию RegisteredWaitHandle
- 30. Невозможно начать сервис внутри внутреннего вещания приемника вещания
Обратите внимание, что, начиная с Honeycomb, действие не может быть уничтожено до тех пор, пока не будет включено onStop, поэтому можно отменить регистрацию в onStop (с соответствующим регистром в onStart) вместо onPause. – Tom