2016-11-21 2 views
0
String hms = String.format("%02d:%02d", 
        TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millisUntilFinished)), 
        TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))); 

Я серьезно не понимаюПочему следующий таймер Count down в android всегда показывает 00:01 в конце?

1) Как минут - работа часов TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millisUntilFinished))

2) Почему это всегда заканчивается 00:01?

3) Как вызывается onTick() метод CountDowntimer?

+0

использовать 'DateUtils.formatElapsedTime' нет необходимости повторно устанавливать колесо – pskink

+0

@pskink DateUtils.formatElapsedTime предназначен только для форматирования времени, правильно? или также выполнить задачу countDownTimer? – user3705478

+0

'Форматирует прошедшее время в формате« MM: SS »или« H: MM: SS »(с использованием формы, подходящей для текущей локали), аналогично используемой на экране вызова в процессе.« – pskink

ответ

1

1) Как минут - часы работы TimeUnit.MILLISECONDS.toMinutes (millisUntilFinished) - TimeUnit.HOURS.toMinutes (TimeUnit.MILLISECONDS.toHours (millisUntilFinished))

  • Не знаю, почему вы сделали это , Вы можете просто написать

    строковых HMS = string.Format ("% 02d:% 02d", TimeUnit.MILLISECONDS.toMinutes (millisUntilFinished), TimeUnit.MILLISECONDS.toSeconds (millisUntilFinished) - TimeUnit.MINUTES.toSeconds (TimeUnit .MILLISECONDS.toMinutes (millisUntilFinished)));

2) Почему это всегда заканчивается 00:01?

Да, вы правы! В таймере обратного отсчета последний вызов не запускает метод onTick(), он будет вызывать метод ниже.

public void onFinish() { 
    mTextField.setText("00:00"); 
} 

Таким образом, вы можете установить «00:00» по методу onFinish(), показанному в приведенном выше фрагменте.

3) Как вызывается метод onTick() CountDowntimer?

-onTick() Обратный вызов, выполняемый с регулярным интервалом, предоставляемым конструктору CountDowntimer.

+0

Thanks , Не могли бы вы ответить на мои другие вопросы? – user3705478

+0

@ user3705478 Я отредактировал свой ответ. –