Android SurfaceView子线程中怎么移除ArrayList中的元素????

我使用了SurfaceView绘图,但是在Run()方法中移除ArrayList 中的元素怎么游戏界面就卡住了,怎么回事????还有使用AlterDialog 也是出现卡住情况,直接就死机了

for( Yun image:(List)yunList){

                canvas.drawBitmap(image.getBitmap(), image.getX(),image.getY(), p1);
                if (image.getX()<=image.getWidth())
                {
                    yunList.remove(image);

                }
            }

for( Yun image:(List)yunList){
canvas.drawBitmap(image.getBitmap(), image.getX(),image.getY(), p1);
if (image.getX()<=image.getWidth());

                    yunList.remove(image);
            }

直接移除是可以的,但是加在判断中就不可以移除了,怎么回事????????

你在遍历的时候改变了 yunlist 本身的size 在取第size的值时取不到 属于 非法操作

     public List<Yun> removeItem(){
        ArrayList<Yun> yunList = new ArrayList<>();
        final ArrayList<Yun> imageList = new ArrayList<>(yunList);
        for (int i =yunList.size()-1;i>=0;i++) {
            if (yunList.get(i).getX()<=yunList.get(i).getWidth){
                imageList.remove(i);
            }
        }
        return imageList;
    }