Не можете отменить регистрацию Broadcast Receiver в Android? - PullRequest
0 голосов
/ 05 июня 2011

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

06-04 22:50:04.267: ERROR/ActivityThread(4188): Activity com.example.android.CView has leaked IntentReceiver com.example.android.CView$1@4062b650 that was originally registered here. Are you missing a call to unregisterReceiver()?
06-04 22:50:04.267: ERROR/ActivityThread(4188): android.app.IntentReceiverLeaked: Activity com.example.android.CView has leaked IntentReceiver com.example.android.CVieww$1@4062b650 that was originally registered here. Are you missing a call to unregisterReceiver()?
06-04 22:50:04.267: ERROR/ActivityThread(4188):     at android.app.LoadedApk$ReceiverDispatcher.<init>(LoadedApk.java:790)
06-04 22:50:04.267: ERROR/ActivityThread(4188):     at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:575)
06-04 22:50:04.267: ERROR/ActivityThread(4188):     at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:848)
06-04 22:50:04.267: ERROR/ActivityThread(4188):     at android.app.ContextImpl.registerReceiver(ContextImpl.java:835)
06-04 22:50:04.267: ERROR/ActivityThread(4188):     at android.app.ContextImpl.registerReceiver(ContextImpl.java:829)
06-04 22:50:04.267: ERROR/ActivityThread(4188):     at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:318)
06-04 22:50:04.267: ERROR/ActivityThread(4188):     at cActivity com.example.android.BehaviourView.onStart(BehaviourView.java:230)
06-04 22:50:04.267: ERROR/ActivityThread(4188):     at 

Есть множество сообщений по этому поводу, и я пробовал многие из них безрезультатно. Практика состоит в том, чтобы зарегистрировать его в OnResume и отменить регистрацию в OnPause, верно? Или я должен отменить регистрацию в onStop(). Я пытался, и тогда он никогда не слушает.

Спасибо за любые указатели!

1 Ответ

3 голосов
/ 05 июня 2011

Практика состоит в том, чтобы зарегистрировать его в OnResume и отменить регистрацию в OnPause, верно?

Да. Вот пример приложения , демонстрирующий это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...