studio - locationlistener android
¿Cómo detener el administrador de ubicación? (5)
¿Es posible que tu actividad no sea destruida? Es decir: pulsa el botón de inicio. Mueva su inicio / parada de onStart
a onStart
y onPause
.
No sé por qué, pero a veces LocationManager sigue funcionando también después de cerrar la aplicación.
Llamo a startGPS () en onCreate-Methode en una actividad (solo una, déjame llamarlo 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();
}
}
Y si esta actividad se destruye (entonces, cuando la aplicación se cierre), llamo a endGPS ()
public void endGPS()
{
try
{
lmanager.removeUpdates(this);
lmanager=null;
}
catch(Exception e)
{
e.printStackTrace();
}
}
Algunas ideas, algunas sugerencias, ¿qué he hecho mal?
Debería llamar al método removeUpdates
dentro del método onPause
:
@Override
protected void onPause() {
super.onPause();
locationManager.removeUpdates(this);
Log.i(TAG, "onPause, done");
}
El emulador nunca se deshace del ícono del GPS una vez cargado. Por lo tanto, en un emulador, no puede usar el ícono del GPS como una prueba para determinar si el GPS todavía está funcionando. En un dispositivo, sin embargo, el icono debería desaparecer.
¿Debo usar dos oyentes diferentes?
Seguro que lo haría. No sé si removeUpdates()
eliminará ambos, o incluso si ambas solicitudes se registran con el único escucha.
Veo que ha pasado un tiempo desde este post, pero tal vez ayudaría a alguien más. Yo uso: removeUpdates (this), porque mi escucha es la actividad donde implemento el administrador de ubicación, debe indicar su escucha.
Yo uso: locationManager.removeUpdates (locationListener); Esta funcionando
@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);
}