我使用畫布,在屏幕上移動對象時,當一個對象碰到畫布左側(x = 0)時,同一類型的另一個對象被實例化,以及開始在屏幕上移動。Android遊戲循環中的java.util.ConcurrentModificationException
一切工作正常,幾個對象被創建並開始在屏幕上移動。
在某一點上,我收到一個併發修改例外在我的run方法在遊戲循環是,其中gameObjs是一個ArrayList:
@Override
public void run() {
while(isRunning){
if(!myHolder.getSurface().isValid())
continue;
Canvas canvas = myHolder.lockCanvas();
canvas.drawRect(0,0,canvas.getWidth(), canvas.getHeight(), pWhite);
for(MyGameObject gameObj : gameObjs){
gameObj.move(canvas);
}
myHolder.unlockCanvasAndPost(canvas);
}
}
我試圖用一個Iterator,但仍然得到相同的錯誤。
我真的很感謝你的幫助。先謝謝你!如果這樣的事情是發生在你的代碼
什麼類型的對象是'gameObjs'? (即'ArrayList'?)另一個正在運行的線程是添加/刪除此集合中的項目嗎?如果發生這種情況並且允許,可以使用'CopyOnWriteArrayList'或其他允許併發修改的集合... – BretC
對不起,我沒有指定gameObjs是ArrayList – LDG
_「我沒有指定gameObjs是一個ArrayList「_但在問題中您具體說:_」...其中gameObjs是一個ArrayList「_。 –