2012-01-27 33 views
-1

我已经编写了Android中的GoogleMaps中显示多个标记的代码。我的代码如下。如何解决Android中GoogleMaps中的ConcurrentModificationException异常

List<Overlay> markersList; 
private MyItemizedOverlay funPlaces; 
Runnable r = new Runnable() { 
     public void run() { 
      if (markersList != null) { 
       MapController mc = mapView.getController(); 
       mc.setZoom(15); 
       for (int i=0; i < markersList.size(); i++) { 
        funPlaces = (MyItemizedOverlay) markersList.get(i); 
        GeoPoint pt = funPlaces.getCenterPt(); 
        mc.setCenter(pt); 
        mapView.postInvalidate(); 
       } 
      } 
     } 
    }; 
Thread t=new Thread(r,"ClassName"); 
t.start(); 

当我运行上面的代码有时它工作正常,但有时它给出ConcurrentModificationException。如何解决这个问题?任何想法非常感谢。

+7

请格式化您的问题。你的问题也应该帮助别人,很难阅读。我还建议看看[如何以及为什么你应该接受答案](http://meta.stackexchange.com/a/5235/169719)。 – Knickedi 2012-01-27 19:07:20

+0

当使用此Runnable时? – Olegas 2012-01-27 19:08:39

+3

哪条线是例外?什么是堆栈跟踪? – 2012-01-27 19:10:25

回答

1

如果这就是你得到错误的地方,那么在迭代过程中几乎可以肯定地修改ArrayList。我无法从你提供的代码中判断这是由于实际的并发性,还是只是在迭代过程中对ArrayList进行修改,但这将是原因。

+0

是的,我明白problem.Do你有问题 – androiduser 2012-01-27 19:50:09

+0

解决方案在没有看到这实际上是错误的代码的一部分吗?只有“重新排列你的代码,这样你才不会通过迭代器以外的任何东西修改ArrayList。”或者,如果它实际上是由于并发性,使用类似的东西的意思是同时使用的CopyOnWriteArrayList。 – 2012-01-27 19:52:15

相关问题