当我的地图活动暂停时,只是浪费了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();
}
如果有人知道为什么会这样,请帮忙,所以我不会把头发拉出来。我不能用这样的电池耗尽问题发布我的应用程序。
答案 0 :(得分:2)
问题出在我的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(),现在它可以正常工作。