Таймер обратного отсчета Android не останавливается в приложении викторины

Извините за мой плохой английский

Привет всем, я сделал викторину, которая включает 5 вопросов. Я сделал страницу ResultActivity, которая отображает результат викторины. Я добавил таймер обратного отсчета на 20 секунд для каждого вопроса. Когда таймер обратного отсчета заканчивается, он автоматически переходит к следующему вопросу. Когда вопросы закончены, он должен перейти на страницу ResultActivity для отображения результата.

У меня только одна проблема...

Если таймер обратного отсчета не заканчивается на 0, он все еще работает в фоновом режиме, и когда вы переходите к третьему экрану под названием ViewAnswerActivity, он возвращает меня на экран ResultActivity.

Как остановить таймер обратного отсчета после достижения третьего экрана? (ВиевАнсверАктивити)

Часть кода

ConceptActivity.class

TextView textView;
CountDownTimer countDownTimer;

@Override
Protected void onCreate (Bundle savedInstanceState) {
   Super.onCreate (savedInstanceState);
   SetContentView (R.layout.activity_concept);

    TextView = (TextView) findViewById;

     CountDownTimer = new CountDownTimer (20 * 1000,1000) {
         @Override
         Public void onTick (long millisUntilFinished) {
            TextView.setText ("" + millisUntilFinished / 1000);
         }

         @Override
         Public void onFinish () {
             Intent conceptIntent = new Intent (ConceptActivity.this, ResultActivity.class);
             StartActivity (conceptIntent);
         }

     } .start ();
 }

person Marko Diaz    schedule 29.12.2016    source источник


Ответы (2)


Проблема в том, что вы не останавливаете таймер.

          Public void onFinish () {
                        Intent conceptIntent = new Intent (ConceptActivity.this, ResultActivity.class);
                        StartActivity (conceptIntent);
                }

          public void cancel(){ 
                       if(countDownTimer != null)
                      countDownTimer.cancel(); 
                }

person Starlord    schedule 29.12.2016
comment
Я использовал countDownTimer.cancel(); но таймер обратного отсчета не останавливается - person Marko Diaz; 30.12.2016
comment
Добавлен метод отмены, попробуйте сейчас - person Starlord; 30.12.2016
comment
не сработало:/ Я снова перенаправился на ResultActivity.class, мне нужно передать ConceptActivity в ResultActivity и ViewAnswerActivity и остаться на третьем экране - person Marko Diaz; 30.12.2016

Добавляйте приведенный ниже код всякий раз, когда вы переходите от действия таймера к другому действию.

myTimer.cancel();
myTimer.purge();

myTimer — это номер переменной типа Timer.

person Aditya    schedule 06.09.2020