1

Je reçois cette erreur lorsque je travaille sur la carte (Ligne de dessin sur la carte à l'aide de l'API GetDirection). J'ai utilisé CopyOnWriteArrayList mais il génère parfois une exception ConcurrentModification.Exception ConcurrentModification en nid d'abeille

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(); 
    } 
} 

Il donne une erreur dans it1.next().

Répondre

0

Appelez-vous ce code dans un thread non UI?

Le ConcurrentModificationException peut être dû à l'ajout de recouvrements dans un thread Non UI, alors que le thread UI tente d'accéder aux superpositions. Vous ne pouvez modifier que les superpositions sur le thread d'interface utilisateur.

+0

Ok, j'ai tout gardé sur le fil de l'interface utilisateur. Aucune erreur jusqu'à maintenant. – voidRy

Questions connexes