2016-05-05 3 views
0

Я создал таймер обратного отсчета в течение 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.

enter image description here

cancel() получает вызов, но обратный отсчет времени не останавливается.

Любая помощь будет оценена по достоинству.

+0

Что такое 'AppController'? – Vucko

+0

@ Vucko - его класс приложений. –

+0

Впервые я вижу это. Предполагается, что он используется как некая глобальная переменная? Я бы рекомендовал использовать [EventBus] (https://github.com/greenrobot/EventBus) для такого рода вещей, это идеально. Если пользователь решает отменить таймер, просто опубликуйте соответствующее событие и onReceive этого события отмените таймер. – Vucko

ответ

1
int adsInterval = 3000; 
CountDownTimer mTimer = mTimer = new CountDownTimer(adsInterval, 1000) { 
    @Override 
    public void onFinish() { 
     Log.d("Seconds", adsInterval + " second"); 
     // YOUR TASK 
    } 

    @Override 
    public void onTick(long l) { 
    } 

}; 
mTimer.start(); 


Timer timer = new Timer(); 
timer.schedule(new TimerTask() { 
    @Override 
    public void run() { 

    } 
}, 3000); 

Для запуска таймера

mTimer.start(); 

ОСТАНОВКА Таймер

mTimer.cancel(); 
+0

Эти методы для вызова таймера работают. –

+0

Правильный ответ. –

 Смежные вопросы

  • Нет связанных вопросов^_^