MyLocationOverlay disableMyLocation() не работает

Просто потратил 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();    
}

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


person NSjonas    schedule 29.06.2011    source источник
comment
если это решено, пожалуйста, ответьте на свой вопрос и отметьте его как правильное решение.   -  person CrackerJack9    schedule 17.09.2011


Ответы (1)


Проблема была в моей инициализации объекта 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(), и теперь она работает.

person NSjonas    schedule 17.09.2011
comment
Спасибо, что поделился! Мне потребовалось некоторое время для поиска этого вопроса. :) - person Jayson Tamayo; 25.11.2011