Extiendo la clase CountDownTimer para obtener algunas funcionalidades personalizadas. En onTick() en caso de que se cumplan algunas condiciones, llamo a cancel(), esperando que sea el final, sin embargo el La devolución de llamada onTick() recibe una llamada hasta que se alcanza la cuenta regresiva. Entonces, ¿cómo evitar que esto suceda?cómo detener/cancelar android CountDownTimer
Respuesta
El método CountDownTimer.cancel() parece no funcionar. Aquí hay otro hilo sin una solución Timer does not stop in android.
Yo le recomendaría usar el temporizador en su lugar. Es mucho más flexible y se puede cancelar en cualquier momento. Puede ser algo así:
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 también está trabajando muy bien para mí, pero creo que sólo funciona si se llama fuera de la Implementación countDownTimer (es decir no lo llaman en el onTick).
Llamar al interior tampoco funcionó.
Sí, llamando no funciona. Llamé forzosamente a Finalizar e intenté cancelar la cuenta atrás dentro de Finish y funcionó – Basher51
He intentado este fragmento de código, ya que la mayoría de las respuestas dicen que no se puede cancelar el temporizador dentro de su implementación, así que traté de usar un controlador dentro de Finish. Publicación anterior, pero si alguien se encuentra con esto es útil.
new Handler().post(new Runnable() {
@Override
public void run() {
timerTextView.setText("00:" + String.format("%02d", counter));
cancel();
}
});
- 1. Android countDownTimer
- 2. Android countDownTimer muestra 1 durante dos segundos
- 3. android CountDownTimer - last onTick no llamado - ¿qué solución limpia usar?
- 4. ¿Cómo extender CountDownTimer para agregar pausa y reanudar el método?
- 5. Pausa CountDownTimer en Android cuando la actividad no está al frente
- 6. ¿Cómo puedo permitir que mi CountDownTimer se restablezca después de que la cuenta regresiva haya finalizado?
- 7. Cómo finalizar la actividad actual en Android
- 8. ¿Cómo funciona un Android WakeLock?
- 9. Actualizando Android TextView regularmente para mostrar la cuenta regresiva
- 10. Eclipse + Android + JUnit prueba referencias android.os class = NoClassDefFoundError
- 11. Android - ¿Cómo imprimir desde un dispositivo Android?
- 12. android - ¿cómo puedo usar el "android: layoutDirection"?
- 13. android countdown timer time
- 14. Android: cómo usar CursorAdapter?
- 15. Android: cómo usar SectionIndexer
- 16. ¿Cómo usar Android ViewSwitcher?
- 17. android: cómo rellenar Edittext?
- 18. Android cómo usar Environment.getExternalStorageDirectory()
- 19. ¿Cómo usar Android ViewPager?
- 20. Cómo probar android: alwaysRetainTaskState
- 21. ¿Cómo uso Android SyncAdapter?
- 22. Cómo cambiar .android ruta
- 23. Cómo blit() en android?
- 24. android cómo detener gps
- 25. Android - cómo obtener android.R.anim.slide_in_right
- 26. ¿Cómo degradar Android ADT?
- 27. Android: ¿Cómo almacenar cookies?
- 28. Android: ¿Cómo llenar SwipeyTabs?
- 29. Android: Cómo usar AlarmManager
- 30. ¿Cómo usar Android DownloadManager?
acaba de hacer una gota en el reemplazo para countDownTimer que se puede cancelar desde dentro onTick: https://gist.github.com/737759 –
@GautierHayoun Por que el método que puedo cancelar en onTick, pero el onTick () todavía se llamará, no sé por qué – Deqing