如何在Android中的GoogleMaps中解决ConcurrentModificationException

时间:2012-01-27 19:00:18

标签: java android

我编写了用于在Android中的GoogleMaps中显示多个标记的代码。我的代码如下。

List<Overlay> markersList;
private MyItemizedOverlay funPlaces;
Runnable r = new Runnable() {
        public void run() {
            if (markersList != null) {
                MapController mc = mapView.getController();
                mc.setZoom(15);
                for (int i=0; i < markersList.size(); i++) {
                    funPlaces = (MyItemizedOverlay) markersList.get(i);
                    GeoPoint pt = funPlaces.getCenterPt();
                    mc.setCenter(pt);
                    mapView.postInvalidate();
                }
            }
        }
    };
Thread t=new Thread(r,"ClassName");
t.start();

当我运行上面的代码时,它有时工作正常,但有时它会给出ConcurrentModificationException。如何解决这个问题?非常感谢任何想法。

1 个答案:

答案 0 :(得分:1)

如果您正在收到错误,那么在迭代进行过程中,您几乎肯定会修改ArrayList。我无法从您提供的代码中看出这是由于实际的并发性,还是在迭代期间仅对ArrayList进行了修改,但这就是原因。