Reputation: 12925
Don't know why, but sometimes LocationManager is still working also after closing application.
I call startGPS() in onCreate-Methode in one Activity (only one, let me call it StartActivity).
protected void startGPS(){
try {
lmanager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
lmanager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);
lmanager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
} catch(Exception e) {
e.printStackTrace();
}
}
And if this activity will be destroyed (so, when application will be closed), I call endGPS()
public void endGPS(){
try {
lmanager.removeUpdates(this);
lmanager=null;
} catch(Exception e) {
e.printStackTrace();
}
}
Some ideas, some suggestions, what have I done wrong?!
Upvotes: 35
Views: 49170
Reputation: 7
Quite an old queerie but this works for me.
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
mLocationManager.removeUpdates(locationListener);
}
Upvotes: 0
Reputation: 61
I use: locationManager.removeUpdates(locationListener); Its Working
@Override
protected void onPause() {
super.onPause();
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
locationManager.removeUpdates(locationListener);
}
Upvotes: 6
Reputation: 350
You should call the method removeUpdates
inside the method onPause
:
@Override
protected void onPause() {
super.onPause();
locationManager.removeUpdates(this);
Log.i(TAG, "onPause, done");
}
Upvotes: 33
Reputation: 31503
Is it possible your activity isn't being destroyed? i.e.: you hit the home button. Move your gps start/stop to onStart
and onPause
.
Upvotes: 13
Reputation: 121
I see it´s been a while since this post, but maybe it would help some body else. I use: removeUpdates(this), because my listener it´s the activity where I implement de location manager, you need to indicate your listener.
Upvotes: 2
Reputation: 1007659
The emulator never gets rid of the GPS icon once loaded. Hence, on an emulator, you cannot use the GPS icon as a test as to whether GPS is still running. On a device, though, the icon should vanish.
Should I use two different listeners?
I sure would. I do not know whether removeUpdates()
will remove both, or even if both requests are registered with the single listener.
Upvotes: 8