蜂巢中的ConcurrentModification异常
我在处理地图时遇到此错误(使用 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()
中给出错误。
I'm getting this error while working on map (Drawing line on map using GetDirection API).
I have used CopyOnWriteArrayList still it sometimes throws ConcurrentModification exception.
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();
}
}
It gives error in it1.next()
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您是否在非 UI 线程中调用此代码?
ConcurrentModificationException 可能是由于在非 UI 线程中添加叠加层而导致,而 UI 线程正在尝试访问叠加层。您只能在 UI 线程上修改叠加层。
Are you calling this code in a non UI thread?
The
ConcurrentModificationException
may be due to adding overlays in an Non UI thread, while the UI thread is trying to access the overlays. You can only modify overlays on the UI thread.