У меня есть код, который воспроизводит 5 звуков с задержкой в 1 секунду между звуками, и я хочу, чтобы эта часть кода выполнялась каждые 5 секунд (поэтому он будет выполняться подряд, если булева переменная истинна, и когдастановится ложным, когда бег протектора остановлен - у меня есть кнопка для запуска и остановки этого выполнения).Все работает отлично, но проблема в том, что я не могу избавиться от 5-секундной задержки при первом нажатии кнопки, поэтому при первом нажатии звуки начинают звучать только через 5 секунд.Как сделать так, чтобы он запускался сразу и только после того, как первый раз начался прием задержек?
Вот код кнопки onClick:
public void clickHandlerStartTempo(final View view) {
if (!tempoOn) {
Toast toast = Toast.makeText(getApplicationContext(), "Start Tempo!", Toast
.LENGTH_SHORT);
toast.show();
tempoOn = true;
final Handler handler = new Handler();
final int delay = 5000; //milliseconds
handler.postDelayed(new Runnable() {
public void run() {
if (tempoOn) {
runCode(view);
handler.postDelayed(this, delay);
}
}
}, delay);
} else {
Toast toast = Toast.makeText(getApplicationContext(), "Stop Tempo!", Toast
.LENGTH_SHORT);
toast.show();
tempoOn = false;
}
}
А вот метод runCode:
public void runCode(View view) {
Runnable runnable = new Runnable() {
@Override
public void run() {
playSound(0);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
for (int i = 0; i < 4; i++) {
if (tempoOn) {
playSound(1);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
} else {
return;
}
}
}
};
Thread thread = new Thread(runnable);
Log.i(TAG, "runCode: Thread id = " + thread.getId());
thread.start();
}
Я новичок в разработке для Android, и любая помощь будет очень признательна.Спасибо.