Domanda

Ho un'attività che implementa LocationListener.

public class MyActivity extends MapActivity  implements LocationListener

Nella mia attività, ho registrare un LocationListener nel onCreate ()

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

Nel metodo OnDestroy, sto rimuovendo la registrazione per la mia LocationListener.

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

Nella mia domanda, posso cambiare il MINTIME e la distanza, in modo da reinizializzare il mio ascoltatore in questo modo:

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

Per scopi di debug, scrivo qualcosa sullo schermo ogni volta che un fornitore è abilitato (in questo caso il GPS).

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

Quello che ho notato è che a volte, più istanze della mia attività (o LocationListener) sono "tenuti in giro". Ogni volta che accendo il provider GPS sulla, invece di vedere 1 affermazione "onProviderEnabled: GPS"., Vedo diverse istanze della mia stampa di questa linea (tutti allo stesso tempo) Attività

Come faccio a ripulire questi ascoltatori (= le mie attività), e assicurarsi che solo 1 rimane attivo in tutta l'applicazione.

È stato utile?

Soluzione

L'Attività implementato OnSharedPreferenceChangeListener.

Nel corso onCreate, l'attività è stata registrata come PreferenceChangelistener, ma non non registrati negli OnDestroy ().

In quanto tale, anche dopo che l'attività è stata distrutta, c'era ancora un riferimento all'attività, causando i messaggi duplicati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top