i have a background service on my android APP that is getting my GPS position and sending it to a remote db. It work's fine.
The problem is when i want to stop the service.... it doesn't stops :S. Also no exception or errors on logcat have appeared... it simply doesn't stops.
this is the code to start my srvice (with a button):
startService(new Intent(GPSLoc.this, MyService.class)); //enciendo el service
this is the code where I stop it (on the onactivityresult method):
stopService(new Intent(GPSLoc.this, MyService.class));
I have been debugged the app, and i checked that the stopService codeline has been called every time that i debugged it, but it doesn't stops......
i am sure that it's not stopped cause on my database i still recive gps positions from the emulator when i have press the button to stop the service.
what i am doing bad?
it could be perhaps that you are creating a new Intent everytime you call the stop service.
perhaps try :
Have you implemented
onDestroy()
? If not, I believe that might be the solution - and you stop yourTimer
or whatever you're using to run the service withinonDestroy()
.See this link for some more information.
You probably are not unregistering your
LocationListener
.I had the same problem. I found that if the service has
GoogleApiClient
connected and still get location update, thestopService()
has totally no effect, the service's industry() was not called. To fix the problem, I created a function to stop the location service in the service code. Call thestopLocationService()
from the activity, and then call stopService. Here is the code example:In activity,