我有一个披萨代码,它遍历一个对象列表并检查它们是否发生碰撞.如果一个与之相撞,则将其从ArrayList中删除.
for (int i = 0; i < arrayList.size(); i++) {
Object c = arrayList.get(i);
if (Rect.intersects(foo.getRect(), c.getRect())) { //Android function, checks if the two rectangles are inside each other.
foo.setPosY(c.getPosY() + 11); // Always works.
foo.setVelY(bird.getVelY() * -1); // Always works.
arrayList.remove(i); // Occasionally fails under special circumcisions.
}
}
Run Code Online (Sandbox Code Playgroud)
当第一次打开应用程序新鲜时,这工作正常.但是,如果我使用后退按钮退出然后快速重新打开应用程序,它将全部工作,除了偶尔,从ArrayList中删除对象不会发生.
如果我关闭应用程序然后将其从最近的应用程序列表中删除,它就可以运行.如果我使用主页键或后退按钮退出然后立即重新打开,则有时无法删除该对象.我不明白为什么会这样,因为其他一切仍然有效.它之前的两行代码运行得很好.我只是不明白.