1

我在处理地图时遇到此错误(使用 GetDirection API 在地图上画线)。我使用过 CopyOnWriteArrayList ,但它有时会引发 ConcurrentModification 异常。

CopyOnWriteArrayList<GeoPoint> pointArray;
pointArray =  parcer.getDirectionParcer(jsonObject);

GeoPoint gp1;
GeoPoint gp2 = src;
Iterator<GeoPoint> it1 = pointArray.iterator();

//for(int i=0;i<pointArray.size();i++) // the last one would be crash

Utility.debugger("2");
while (it1.hasNext()) {
    try {
        gp1 = gp2;
        gp2 = (GeoPoint) it1.next();
        mMapView.getOverlays().add(new MyOverLay(gp1,gp2,2,color));
    } catch (ConcurrentModificationException e) {
        Utility.debugger("exception");
        e.printStackTrace();
    }
}

它给出了错误it1.next()

4

1 回答 1

0

您是否在非 UI 线程中调用此代码?

ConcurrentModificationException可能是由于在非 UI 线程中添加了覆盖,而 UI 线程正在尝试访问覆盖。您只能在 UI 线程上修改叠加层。

于 2011-11-14T05:23:53.390 回答