1

マップ上で作業中にこのエラーが発生しました(GetDirection APIを使用してマップ上に線を描画)。 CopyOnWriteArrayListを使用しましたが、それでも時々ConcurrentModification例外がスローされます。ハニカムの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()にエラーがあります。

答えて

0

このコードを非UIスレッドで呼び出していますか?

ConcurrentModificationExceptionは、UIスレッドがオーバーレイにアクセスしようとしている間に、非UIスレッドにオーバーレイを追加することが原因である可能性があります。オーバーレイはUIスレッドでのみ変更できます。

+0

私はUIスレッドですべてを保持しています。今までのエラーはありません。 – voidRy

関連する問題