Pregunta

Tengo una actividad que implementa LocationListener.

public class MyActivity extends MapActivity  implements LocationListener

En mi actividad, registro un LocationListener en el onCreate ()

lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTime, distance, this);

En el método OnDestroy, estoy quitando el registro para mi LocationListener.

@Override
protected void onDestroy() {
    Utils.addDebugMsg(this,"onDestroy");
    lm.removeUpdates(this);
    super.onDestroy();
}

En mi solicitud, puedo cambiar el MinTime y la distancia, así que reinicializar mi oyente como esto:

private void initializeGpsListener() {
    lm.removeUpdates(this);
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTime, distance, this);
}

Para propósitos de depuración, escribo algo a la pantalla cada vez que se habilita un proveedor (en este caso el GPS).

    @Override
    public void onProviderEnabled(String provider) {
        Utils.addDebugMsg(this,"onProviderEnabled : " + provider);
    }

Lo que noté es que a veces, varias instancias de mi actividad (o LocationListener) se "mantienen alrededor". Cada vez que enciendo el proveedor de GPS en lugar de ver la declaración 1 "onProviderEnabled: GPS"., Veo varias instancias diferentes de mi actividad de impresión de esta línea (todo al mismo tiempo)

¿Cómo limpiar estos oyentes (= mis actividades), y asegurarse de que sólo 1 permanece activo en toda la aplicación.

¿Fue útil?

Solución

La actividad implementada OnSharedPreferenceChangeListener.

Durante onCreate, la actividad se registró como un PreferenceChangelistener, pero no no registrado en el OnDestroy ().

Como tal, incluso después de la actividad fue destruido, todavía había una referencia a la actividad, haciendo que los mensajes duplicados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top