У меня есть runnable, который я хочу выполнять 4 раза в секунду. Вот мой исполняемый файл:
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 не выполняется?