Обратный отсчет проблемы в Android
Я создал CountDownTimer
перед началом записи. Часть кода:
if(bitRateBoolean && timeBoolean && name) {
toast = Toast.makeText(getActivity(), "Registration will start in 5 seconds", Toast.LENGTH_SHORT);
toast.show();
new CountDownTimer(5000, 1000) {
public void onTick(long millisUntilFinished) {
Toast.makeText(getActivity(), "seconds remaining: " + millisUntilFinished / 1000,
Toast.LENGTH_LONG).show();
}
public void onFinish() {
toast.cancel();
rec();
}
}.start();
}
Я хочу чтобы rec()
начинается через 5 секунд и тост отображает обратный отсчет. Но это не работает. Он отображает обратный отсчет, но кажется, что он отсчитывает каждые две секунды вместо одной. Мне нужно подождать, пока тост исчезнет. Что-то не так в коде?
1 ответ
Таймер обратного отсчета из того, что я прочитал здесь, проблема заключается в времени тоста, так как это занимает более двух секунд. Следующий onClick вызывается только после завершения первого. Если ваш тост занимает больше 1 секунды ("Toast.LENGTH_LONG", что он определенно делает), то следующий вызов onTick не будет через 1 секунду.
private static final int LONG_DELAY = 3500; // 3,5 секунды
private static final int SHORT_DELAY = 2000; // 2 секунды
это значения по умолчанию для LENGTH_LONG и LENGTH_SHORT.
мой совет - использовать уведомления в строке состояния вместо тоста