Итак, я смотрел на так много источников и всякий раз, когда возникает такая проблема, это потому, что countdowntimer пытается отменить изнутри ontick. Это не моя проблема. У меня есть countdowntimer в runnable. Я отменяю таймер, я отменяю runnable, и он все равно каким-то образом вызван. Ниже приведен код. Я ценю любую помощь!CountdownTimer не получается Отменено
Handler myHandler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
CountDownTimer countdownTimer = new CountDownTimer(difference - (1000 * 60) + 2000, 60000) {
public void onTick(long millisUntilFinished) { // some work here
}
public void onFinish() {
// some other work here
};
data.get(i).setCountDownTimer(countdownTimer);
data.get(i).getCountDownTimer().start();
}
};
data.get(i).setHandler(myHandler);
data.get(i).setRunnable(runnable);
data.get(i).start(2000);
Начало функции в основном:
public void start(int milliseconds){
handler.postDelayed(runnable, milliseconds);
}
данных представляет собой список объектов, где каждый из них имеет свой собственный работоспособный, обработчик и countdowntimer.
Вот что я делаю, когда я отменяю:
data.get(i).getCountDownTimer().cancel();
data.get(i).terminate();
Прервать функция в основном:
public void terminate() {
handler.removeCallbacks(runnable);
}
Кто-то пожалуйста, скажите мне, почему countdowntimer как-то по-прежнему работает после того, как я отменить это так, как я делать выше; благодаря!
UPDATE
В onFinish, у меня есть еще один отсчет, который находится на меньшем интервале. Вызывается onFinish, когда я отменяю CountDownTimer? В противном случае у меня действительно нет идей! Благодарю.
'cancel()' должно быть достаточно. Как вы узнаете, что CDT все еще работает? – injecteer
@ injecteer Поскольку onTick по-прежнему вызывается после того, как я отменил .. – TJ56