Обратный отсчет проблемы в 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.
мой совет - использовать уведомления в строке состояния вместо тоста

Другие вопросы по тегам