处理程序 - 为什么我的runnable没有执行?

时间:2015-07-31 23:50:21

标签: java android handler runnable

我有一个runnable,我想每秒执行4次。这是我的runnable:

shoot = new Runnable() {
        @Override
        public void run() {
            //Add bullet
            parts.add(new Part(1, (int)(screenWidth*.01),
                    Part.TYPE_CIRCLE, (int)parts.get(activeShooter).center.x,
                    (int)parts.get(activeShooter).center.y));
            parts.get(parts.size()-1).x_vel = (int)(Math.cos(parts.get(activeShooter).rotation)*bulletSpeed);
            parts.get(parts.size()-1).y_vel = (int)(-Math.sin(parts.get(activeShooter).rotation)*bulletSpeed);
            activeShooter = (activeShooter == numShooters) ? 0 : activeShooter + 1;
            shooter.postDelayed(shoot, 250);
        }
    };

这是我的初始处理程序设置:

private void startBullets(){
    Looper.prepare();
    shooter = new Handler();
    shooter.postDelayed(shoot, 250);
}

在我所有的其他项目中,我没有必要调用Looper.prepare,但如果我不在这个项目中,它会引发异常。我不知道为什么。我基本上从另一个项目中复制了一个工作代码(一个不需要我调用Looper.prepare())。任何人都可以看到为什么我的runnable没有执行?

1 个答案:

答案 0 :(得分:0)

private void startBullets(){
    shooter = new Handler();
    shooter.postDelayed(shoot, 250);
}

确保在完成后通过Looper退出Looper.quit()