Android
Таймер обратного отсчета
Поиск…
параметры
параметр | подробности |
---|---|
long millisInFuture | Общая продолжительность работы таймера, так как в будущем вы хотите, чтобы таймер заканчивался. В миллисекундах. |
long countDownInterval | Интервал, на который вы хотите получать обновления таймера. В миллисекундах. |
long millisUntilFinished | Параметр, указанный в onTick() , указывает, сколько времени осталось CountDownTimer. В миллисекундах |
замечания
CountDownTimer - довольно скудный класс - он делает одну вещь очень хорошо. Поскольку вы можете только запустить / отменить CountDownTimer, вам нужно реализовать функции паузы / возобновления, как показано во втором примере. Для более сложных функций или для указания таймера, который должен выполняться неограниченное время, используйте объект Timer .
Создание простого таймера обратного отсчета
CountDownTimer полезен для многократного выполнения действия в устойчивом интервале для заданной продолжительности. В этом примере мы будем обновлять текстовое представление каждую секунду в течение 30 секунд, рассказывая, сколько времени осталось. Затем, когда таймер закончится, мы установим TextView, чтобы сказать «Готово».
TextView textView = (TextView)findViewById(R.id.text_view);
CountDownTimer countDownTimer = new CountDownTimer(30000, 1000) {
public void onTick(long millisUntilFinished) {
textView.setText(String.format(Locale.getDefault(), "%d sec.", millisUntilFinished / 1000L));
}
public void onFinish() {
textView.setText("Done.");
}
}.start();
Более сложный пример
В этом примере мы остановимся / возобновим CountDownTimer на основе жизненного цикла Activity.
private static final long TIMER_DURATION = 60000L;
private static final long TIMER_INTERVAL = 1000L;
private CountDownTimer mCountDownTimer;
private TextView textView;
private long mTimeRemaining;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView)findViewById(R.id.text_view); // Define in xml layout.
mCountDownTimer = new CountDownTimer(TIMER_DURATION, TIMER_INTERVAL) {
@Override
public void onTick(long millisUntilFinished) {
textView.setText(String.format(Locale.getDefault(), "%d sec.", millisUntilFinished / 1000L));
mTimeRemaining = millisUntilFinished; // Saving timeRemaining in Activity for pause/resume of CountDownTimer.
}
@Override
public void onFinish() {
textView.setText("Done.");
}
}.start();
}
@Override
protected void onResume() {
super.onResume();
if (mCountDownTimer == null) { // Timer was paused, re-create with saved time.
mCountDownTimer = new CountDownTimer(timeRemaining, INTERVAL) {
@Override
public void onTick(long millisUntilFinished) {
textView.setText(String.format(Locale.getDefault(), "%d sec.", millisUntilFinished / 1000L));
timeRemaining = millisUntilFinished;
}
@Override
public void onFinish() {
textView.setText("Done.");
}
}.start();
}
}
@Override
protected void onPause() {
super.onPause();
mCountDownTimer.cancel();
mCountDownTimer = null;
}