Я расширяю класс CountDownTimer, чтобы получить некоторые пользовательские функции. В onTick() в случае выполнения некоторых условий я вызываю cancel(), ожидая, что это будет конец, однако onTick() обратный вызов вызывает вызов до достижения обратного отсчета. Итак, как предотвратить это?Как остановить/отменить android CountDownTimer
ответ
Метод CountDownTimer.cancel(), кажется, не работает. Вот еще одна нить без решения Timer does not stop in android.
Я бы порекомендовал вам вместо этого использовать Таймер. Он намного более гибкий и может быть отменен в любое время. Это может быть что-то вроде этого:
public class MainActivity extends Activity {
TextView mTextField;
long elapsed;
final static long INTERVAL=1000;
final static long TIMEOUT=5000;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTextField=(TextView)findViewById(R.id.textview1);
TimerTask task=new TimerTask(){
@Override
public void run() {
elapsed+=INTERVAL;
if(elapsed>=TIMEOUT){
this.cancel();
displayText("finished");
return;
}
//if(some other conditions)
// this.cancel();
displayText("seconds elapsed: " + elapsed/1000);
}
};
Timer timer = new Timer();
timer.scheduleAtFixedRate(task, INTERVAL, INTERVAL);
}
private void displayText(final String text){
this.runOnUiThread(new Runnable(){
@Override
public void run() {
mTextField.setText(text);
}});
}
}
CountDownTimer также работает нормально для меня, но я думаю, что это работает только, если вы звоните его вне CountDownTimer РЕАЛИЗАЦИИ (т.е. не называть его в OnTick).
Звонок внутри тоже не сработал.
Да, вызов его в onTick, похоже, не работает. Я просто позвонил в Finish и попробовал отменить countdowntimer внутри onFinish, и это сработало – Basher51
Я пробовал этот фрагмент кода, так как большинство ответов говорят о том, что вы не можете отменить таймер внутри его реализации, поэтому я попытался использовать обработчик внутри onFinish. Старый пост, но если кому-то это поможет.
new Handler().post(new Runnable() {
@Override
public void run() {
timerTextView.setText("00:" + String.format("%02d", counter));
cancel();
}
});
- 1. Android: CountDownTimer
- 2. android CountDownTimer
- 3. Android CountDownTimer
- 4. CountDownTimer Android
- 5. Как использовать CountDownTimer в android?
- 6. Android Studio Как манипулировать CountDownTimer
- 7. Как использовать CountDownTimer для Android?
- 8. Как остановить CountDownTimer в android
- 9. Incrementing millisUntilFinished (Countdowntimer) - Android
- 10. android countdowntimer wait
- 11. Android, CountDownTimer латентность
- 12. Android - CountDownTimer на DialogFragment
- 13. Android: CountDownTimer не работает
- 14. Android Editable CountDownTimer Issue
- 15. Android CountDownTimer отменить подсчет
- 16. Android Studios CountDownTimer
- 17. Android Countdowntimer issue
- 18. начать снова CountDownTimer - android
- 19. Пауза/Резюме CountDownTimer Android
- 20. Android времени изменение countDownTimer
- 21. Отмена CountDownTimer Android Java
- 22. Android: CountDownTimer в BroadcastReceiver
- 23. Android Studio CountDownTimer Navigation
- 24. CountDownTimer для Android
- 25. Android CountDownTimer и AlertDialog
- 26. CountDownTimer Проблема с Android
- 27. Ошибка в countdowntimer в android?
- 28. Android countDownTimer - сделать millisUntilFinished плавать
- 29. Передача значения countdowntimer() в android
- 30. Android: CountDownTimer пропускает последний onTick()!
Просто сделал падающую в замену CountDownTimer, что вы можете отказаться от в OnTick: https://gist.github.com/737759 –
@GautierHayoun По Вас способом я могу отменить в OnTick, но OnTick () все равно будет вызван, не знаю, почему – Deqing