我正在开发一款每秒30次触发onDraw()
方法的Android游戏。
在这个方法中,我正在迭代ArrayList
个对象并使用我创建的object.Draw()
方法绘制它们。
我的问题是,我想在游戏ArrayList
中为此onTouchEvent()
添加对象,但有时会出现以下错误:
java.util.ConcurrentModificationException
我知道这里发生了什么,当我触摸屏幕时onTouchEvent()
会触发,因此对象被添加到我的ArrayList
,但有时这会在我的onDraw()
方法触发时发生,它遍历我的ArrayList
,这会导致异常。有道理。
我的问题是,如果我在ArrayList
方法中进行迭代,当我触摸屏幕时如何向onDraw()
添加对象?我可以尝试在onDraw()
方法中检测触摸事件吗?这种方式永远不会有问题。这是我第一次为Android编程游戏,这种事情通常是如何处理的?
答案 0 :(得分:1)
看起来您正在从不同的线程访问和修改列表。尝试synchronizing访问列表(因此一次只有一个线程可以访问它)。
另一种选择可能是使用CopyOnWriteArrayList。