Исключение ConcurrentModification в сотах - PullRequest
1 голос
/ 14 ноября 2011

Я получаю эту ошибку при работе на карте (Рисование линии на карте с помощью API GetDirection). Я использовал 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().

1 Ответ

0 голосов
/ 14 ноября 2011

Вы называете этот код не в потоке пользовательского интерфейса?

ConcurrentModificationException может быть связано с добавлением оверлеев в потоке без пользовательского интерфейса, когда поток пользовательского интерфейса пытается получить доступ к оверлеям. Вы можете изменять только оверлеи в потоке пользовательского интерфейса.

...