我在使用 android 应用程序时遇到问题。
我有一个线程不断迭代列表或形状,更新它们的位置,有时从列表中删除一个项目。在线程的 while 循环结束时,它调用 postInvalidate() 来提示重绘。
这是对 ArrayList 进行修改的代码。
Iterator<Shape> iterator = this.myList.iterator();
while (iterator.hasNext()) {
Shape nextShape = iterator.next();
nextShape.move();
if(condition) {
iterator.remove()
}
}
onDraw 方法使用 for each 循环来绘制每个项目。尽管仅通过迭代器修改列表,但我在 onDraw 方法中得到并发修改。我尝试过 CopyOnWriteArrayList 和 Collections.synchronized,结果相同。
任何帮助,将不胜感激。