小编Jim*_*orn的帖子

ArrayList.remove()的意外行为

我有一个披萨代码,它遍历一个对象列表并检查它们是否发生碰撞.如果一个与之相撞,则将其从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中删除对象不会发生.

如果我关闭应用程序然后将其从最近的应用程序列表中删除,它就可以运行.如果我使用主页键或后退按钮退出然后立即重新打开,则有时无法删除该对象.我不明白为什么会这样,因为其他一切仍然有效.它之前的两行代码运行得很好.我只是不明白.

java android arraylist

0
推荐指数
1
解决办法
253
查看次数

标签 统计

android ×1

arraylist ×1

java ×1