У меня уже есть googled, и все темы говорят то же самое решение handler.removeCallbacks(null)
или handler.removeCallbacksAndMessages(null)
. Но никто из них не работал для меня.Я действительно не могу остановить обработчик! Как я могу?
Handler handler;
Runnable runnable;
@Override
protected void onCreate(Bundle savedInstanceState) {
//...
handler = new Handler();
runnable = new Runnable() {
@Override
public void run() {
time -= 100;
if(time == 0){
Intent i = new Intent(Question.this, WrongAnswer.class);
startActivity(i);
finish();
}
else{
handler.postDelayed(this, 100);
}
}
};
handler.postDelayed(runnable,3000);
//...
}
А вот случай, когда деятельность выходит до того, как истечет время:
if(myAnswer == correctAnswer)
{
Intent i = new Intent(this, CorrectAnswer.class);
startActivity(i);
handler.removeCallbacksAndMessages(null);
finish();
}
Используйте handler.removeCallbacks (работоспособный) вместо этого. – Piyush
Я попытался использовать handler.removeCallbacks (runnable), но та же проблема появляется – aleksandar1angelov
Ваш обработчик продолжает работать, даже если вы вызываете финиш в runnable? Разве это не остановит текущую деятельность? –