尝试修改ArrayList时的Java异常

时间:2014-03-09 04:23:57

标签: android

我正在开发一款每秒30次触发onDraw()方法的Android游戏。

在这个方法中,我正在迭代ArrayList个对象并使用我创建的object.Draw()方法绘制它们。

我的问题是,我想在游戏ArrayList中为此onTouchEvent()添加对象,但有时会出现以下错误:

java.util.ConcurrentModificationException

我知道这里发生了什么,当我触摸屏幕时onTouchEvent()会触发,因此对象被添加到我的ArrayList,但有时这会在我的onDraw()方法触发时发生,它遍历我的ArrayList,这会导致异常。有道理。

我的问题是,如果我在ArrayList方法中进行迭代,当我触摸屏幕时如何向onDraw()添加对象?我可以尝试在onDraw()方法中检测触摸事件吗?这种方式永远不会有问题。这是我第一次为Android编程游戏,这种事情通常是如何处理的?

1 个答案:

答案 0 :(得分:1)

看起来您正在从不同的线程访问和修改列表。尝试synchronizing访问列表(因此一次只有一个线程可以访问它)。

另一种选择可能是使用CopyOnWriteArrayList