У меня есть Activity, которая реализует LocationListener.
public class MyActivity extends MapActivity implements LocationListener
В своей деятельности я регистрирую locationlistener в onCreate ()
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTime, distance, this);
В методе onDestroy яудаление регистрации для моего Locationlistener.
@Override
protected void onDestroy() {
Utils.addDebugMsg(this,"onDestroy");
lm.removeUpdates(this);
super.onDestroy();
}
В моем приложении я могу изменить minTime и расстояние, поэтому я повторно инициализирую мой слушатель следующим образом:
private void initializeGpsListener() {
lm.removeUpdates(this);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTime, distance, this);
}
Для целей отладкиЯ что-то записываю на экран всякий раз, когда провайдер включен (в данном случае GPS).
@Override
public void onProviderEnabled(String provider) {
Utils.addDebugMsg(this,"onProviderEnabled : " + provider);
}
Что я заметил, так это то, что иногда несколько экземпляров моей активности (или Locationlistener) «держатся».Каждый раз, когда я включаю провайдера GPS, вместо того, чтобы видеть 1 оператор «onProviderEnabled: GPS», я вижу несколько разных случаев, когда моя активность печатает эту строку (все в одно и то же время).
Как выполнить очисткуэти слушатели (= мои действия), и убедитесь, что только 1 остается активным во всем приложении.