4

マップアクティビティが一時停止しているときにGPSアイコンが通知バーに表示されたままになる理由を理解するために3時間を無駄にしました。使用している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 に答える