Я создал таймер обратного отсчета в течение 5 минут, но если пользователь выполнит задачу за 2 минуты, я хочу остановить таймер.Android CountDownTimer не получает отмена
Я использую логический флаг, чтобы проверить, что пользователь погоды выполнил задание или нет.
Если пользователь выполнил задачу, прежде чем общее время тогда я звоню cancel()
Мой код
public void settimer(final TextView time, long milliseconds) {
new CountDownTimer(milliseconds, 1000) {
public void onTick(long millisUntilFinished) {
time.setText(String.format("%d:%d",
TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished),
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))));
AppController.RunningTime = millisUntilFinished;
if (AppController.Stoptimer)
this.cancel();
}
public void onFinish() {
AppController.TimeFinished = true;
}
}.start();
}
cancel()
является обратный отсчет методов Timmer mentioned here.
cancel()
получает вызов, но обратный отсчет времени не останавливается.
Любая помощь будет оценена по достоинству.
Что такое 'AppController'? – Vucko
@ Vucko - его класс приложений. –
Впервые я вижу это. Предполагается, что он используется как некая глобальная переменная? Я бы рекомендовал использовать [EventBus] (https://github.com/greenrobot/EventBus) для такого рода вещей, это идеально. Если пользователь решает отменить таймер, просто опубликуйте соответствующее событие и onReceive этого события отмените таймер. – Vucko