Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

unregisterReciever on cancel() ? #4

Open
GoogleCodeExporter opened this issue Apr 8, 2015 · 3 comments
Open

unregisterReciever on cancel() ? #4

GoogleCodeExporter opened this issue Apr 8, 2015 · 3 comments

Comments

@GoogleCodeExporter
Copy link

Hi,

great stuff an I'm using it in my current project. I found that under some 
conditions (getLastBestLocation has asked for an update and has registered a 
broadcast reciever but not received an update before I call cancel()) this one 
can appear: 

07-12 13:54:00.388: ERROR/ActivityThread(496): Service 
com.eventorama.mobi.lib.service.GetLocationService has leaked IntentReceiver 
com.eventorama.mobi.lib.location.GingerBreadLocationFinder$1@405f5d40 that was 
originally registered here. Are you missing a call to unregisterReceiver()?

I changed the cancel() method for example of the GingerBreadLocationFinder to:

public void cancel() {
    locationManager.removeUpdates(singleUpatePI);
    context.unregisterReceiver(singleUpdateReceiver);
 }

which fixes the issue. 

Keep the good examples going it's really a valuable resource!

Original issue reported on code.google.com by dominik....@gmail.com on 12 Jul 2011 at 12:32

@GoogleCodeExporter
Copy link
Author

I had to wrap that in a try/catch as sometimes there was an Exception if the 
receiver had not been registered.

Also, I added:

lastLocationFinder.cancel();

to onPause() in the main activity (for my app at least this was required)

Original comment by bjw...@gmail.com on 22 Jul 2011 at 2:18

@GoogleCodeExporter
Copy link
Author

I also had to wrap the unregisterReceiver(singleUpdateReceiver) in a try-catch 
because the onReceive method was getting called twice and on the second time it 
triggered an IllegalArgumentException because the receiver had been 
unregistered on the first call to onReceive. Anyone know why the onReceive is 
called twice sometimes? One way to test this is to comment out the if check in 
GingerbreadLastLocationFinder.getLastBestLocation(...) to force the receiver 
registration.

Original comment by jerrell....@gmail.com on 28 Jul 2011 at 2:57

@GoogleCodeExporter
Copy link
Author

in cancel() method check the boolean flag indicating if the receiver has been 
already unregistered in onReceive()

Original comment by biegl...@gmail.com on 18 Feb 2014 at 12:30

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant