MyLocationOverlay disableMyLocation (), похоже, не работает - PullRequest
4 голосов
/ 29 июня 2011

Просто впустую 3 часа, пытаясь выяснить, почему значок GPS все еще отображается в панели уведомлений, когда моя активность карты приостановлена. Я сузил это до того, чтобы иметь дело с объектом MyLocationOverlay, который я использую (у меня также есть LocationListener и GpsStatus.Listener).

@Override
protected void onPause() { 
super.onPause();
manager.removeUpdates(locListener);
manager.removeGpsStatusListener(statListener);    

myLocOverlay.disableMyLocation(); //!doesn't seem to work
myLocOverlay.disableCompass();    
}

Если кто-нибудь знает, почему это происходит, помогите, чтобы я не выдернул все волосы. Я не могу выпустить свое приложение с такой проблемой, как разрядка аккумулятора.

1 Ответ

2 голосов
/ 17 сентября 2011

Проблема была в моей инициализации объекта MyLocationOverlay. Неверный код:

private void initMyLocation() {
   myLocOverlay = new MyLocationOverlay(this, mapView); //THIS SHOULD NOT BE HERE.      
   myLocOverlay.enableMyLocation();
   myLocOverlay.enableCompass();
   mapView.getOverlays().add(myLocOverlay);
}

Моя функция initMyLocation () вызывается несколько раз по всему моему коду. Вызов этой строки: myLocOverlay = new MyLocationOverlay (this, mapView); несколько раз создавал несколько слушателей, которые не удалось отключить с помощью disableMyLocation () (я думаю ...).

В любом случае, я переместил инициализацию MyLocationOverlay в onCreate (), и теперь она работает.

...