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 に答える