4

只是浪费了 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();    
}

如果有人知道为什么会发生这种情况,请帮忙,这样我就不会把所有的头发都拉出来。我无法发布我的应用程序,因为出现这样的电池耗尽问题。

4

1 回答 1

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() ,现在它可以工作了。

于 2011-09-17T17:27:43.707 回答