В приложении я снова открываю ту же активность, в которой находится таймер. Первый раз таймер работает, но после этого он начинает глючить в Runs onFinish() в случайное время. Как я могу это исправить?
new CountDownTimer(10000, 1000) {
public void onTick(long millisUntilFinished) {
textQuestion.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() {
wrongAnswer();
}
}.start();
Попробуйте с ведением журнала значения millisUntilFinished внутри onTick




Вы должны хранить CountDownTimer в таймере и отменять его при переходе к другому действию или фрагменту;
Создать CountDownTimer как глобальную переменную (выше onCreate)
CountDownTimer timer;
Инициализируйте таймер там, где вы хотите запустить таймер или когда угодно
timer = new CountDownTimer(10000, 1000) {
public void onTick(long millisUntilFinished) {
textQuestion.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() {
wrongAnswer();
}
}.start();
И в onDestroy отменить его
@Override
protected void onDestroy() {
if (timer != null) timer.cancel();
super.onDestroy();
}
Он показывает, что метод переопределения должен вызывать super.OnDestroy().
Это невозможно, ваш onFinish будет вызван через 10 секунд после запуска таймера.