2016-05-25 2 views
1

Я использую CountDownTimer в своем коде, и когда я запускаю приложение, у меня есть одна проблема, когда я перехожу на следующий уровень (перейдите к следующему действию) таймер должен быть остановлен и не запускать onfinish метод но когда таймер первого уровня работает, он запускает метод onfinish и переходит к активности GameOver.CountDownTimer onfinish метод запускается после изменения активности

Я использую Intent для перемещения между моей деятельности и моей CountDownTimer является:

new CountDownTimer(timeoflevel, 1000) { 

     public void onTick(long millisUntilFinished) { 
      txtclock2.setText("Time: " + millisUntilFinished/1000); 
      //here you can have your logic to set text to edittext 
     } 

     public void onFinish() { 

      txtclock2.setText("..Finish.."); 
      Intent intent = new Intent(Play.this , GameOver.class); 
      startActivity(intent); 
     } 

    }.start(); 

Извините за мой простой вопрос и спасибо за чтение.

+0

таймер должен быть остановить и не запускать onfinish, означает, что вы хотите, чтобы остановить время в onFinish() метод –

+0

в первый раз таймер работает и при переходе на следующий уровень его остановить он не работает, я прав? –

ответ

1
CountDownTimer countDownTimer; 


countDownTimer = new CountDownTimer(timeoflevel, 1000) { 
     public void onTick(long millisUntilFinished) { 
      txtclock2.setText("Time: " + millisUntilFinished/1000); 
      //here you can have your logic to set text to edittext 
     } 

     public void onFinish() { 
      txtclock2.setText("..Finish.."); 
      Intent intent = new Intent(Play.this , GameOver.class); 
      startActivity(intent); 
     } 
}.start(); 

// и в OnStop

public void onStop(){ 
     countDownTimer.cancel(); 
} 
1

Вы должны вызвать countDownTimer.cancel() перед началом следующего уровня. Он отменит concDownTimer и не будет вызывать onFinish.

0
public void onStop(){ 

    //Cancel your timer here before going to next activity. 

} 
0
CountDownTimer countDownTimer; 

//in on Resume() 

countDownTimer = new CountDownTimer(timeoflevel, 1000) { 
    public void onTick(long millisUntilFinished) { 
    txtclock2.setText("Time: " + millisUntilFinished/1000); 
     //TODO perform operation 
    } 
    public void onFinish() { 
     txtclock2.setText("..Finish.."); 
     Intent intent = new Intent(Play.this , GameOver.class); 
     startActivity(intent); 
    } 
}.start(); 

// Cancel Timer in onPause() 

public void in onPause(){ 
    countDownTimer.cancel(); 
}