私は自分ので異常な動作を経験していMapView
ます。問題に影響を与える可能性があるかどうかわからない方法でRoboGuiceを使用しています。
問題は、マップでを有効にすると、そのMyLocationListener
上のすべてのオーバーレイが無限に再描画され続けることです。
この例を見てください:
MyMapActivity
@ContentView(R.layout.map)
public class MyMapActivity extends RoboMapActivity {
@InjectView(R.id.map)
private MapView map;
private List<Overlay> mapOverlays;
private MyLocationOverlay compass;
private TestOverlay testOverlay;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
map.setBuiltInZoomControls(true);
mapOverlays = map.getOverlays();
compass = new MyLocationOverlay(this, map);
testOverlay = new TestOverlay();
}
@Override
protected void onResume() {
super.onResume();
compass.enableCompass();
refreshMap();
}
private void refreshMap() {
mapOverlays.clear();
mapOverlays.add(testOverlay);
}
@Override
protected void onPause() {
compass.disableCompass();
super.onPause();
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
TestOverlay
public class TestOverlay extends Overlay {
@Override
public void draw(Canvas arg0, MapView arg1, boolean arg2) {
System.out.println("drawing...");
super.draw(arg0, arg1, arg2);
}
}
これを実行すると、drawing...
1秒間に約10回印刷されます。しかし、この行をコメントアウトしてのコンパス
を有効にしない場合は、次のようになります。MyLocationOverlay
// compass.enableCompass();
その後、再描画は停止します。
なぜこれが起こるのかについて何か考えはありますか?それはバグですか、それとも私は何か間違ったことをしていますか?
編集
RoboGuiceを使用しないプロジェクトで再現しただけでも、問題は発生します。
これからはそのコンパスなしでやろうと思います