Хорошо, таким образом у меня довольно странная проблема: У меня есть один метод, призывающую последовательность запаздывающих методов, например:Как подключить таймеры?
btn1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
flash(true, 3000);
flash(false, 1200);
}
});
И функция вспышки идет:
private void flash(final boolean color, int duration) {
// SLEEP duration MILLISECONDS HERE ...
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
changeColour(color);
}
}, duration);
}
Что происходит что таймер 1200 мс стартует до таймера 3000 мс, хотя сначала должен пройти 3 секунды. Я попытался добавить триггер для таймеров но замораживает только все приложения:
...
public void onClick(View view) {
flash(true, 3000);
while(wait); //stop here until the timer triggers wait to false
wait = false;
flash(false, 1200);
}
...
public void run() {
changeColour(color);
wait=false;
}
...
Любая помощь приветствуется, спасибо.
Спасибо, это, кажется, последним средством: мое беспокойство, что укладка , скажем, сто таймеров в очереди не будет работать, потому что добавление в очередь занимает некоторое время - это может дополнительно задержать таймеры для низких значений, таких как 50 мс. – Sincress
@Sincress Некоторые смещения произойдут, но вызов 'flash()' в цикле с разными возрастающими интервалами времени не должен зависеть от видимой задержки. – Luksprog
На самом деле это сработало просто отлично, спасибо вам, сэр! – Sincress