¿Cómo puedo detener un temporizador?
Tengo una pregunta simple, ¿cómo puedo detener el temporizador?
Button bCancel = (Button)findViewById(R.id.bt1); bCancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub finish(); startActivity(new Intent("com.jom.testcdt2.CANCELCLASS")); } }); final Thread logoTimer = new Thread(){ public void run(){ try { int logoTimer = 0; while (logoTimer < 10000) { sleep(100); logoTimer = logoTimer + 100; } startActivity(new Intent("com.jom.testcdt2.CLEARSCREEN")); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } finally{ finish(); } } }; logoTimer.start(); }
Cuando presiono el botón bCancelar, se inicia una nueva actividad, pero el temporizador sigue funcionando y después de 10 segundos se inicia CLEARSCREEN. Al hacer clic en quiero que el temporizador se detenga. ¿Cómo puedo hacer eso?
- ¿Cómo hacer un temporizador simple sin nueva clase en Android?
- Java cronometrar, System.nanoTime () batear que System.currentTimeMillis () pero persiste sobre sueño?
- Cómo mostrar el temporizador en android
- Android ejecutar hilo en el servicio cada X segundos
- ¿Cómo agregar tiempo al temporizador de cuenta atrás?
- Timertask o manejador
- ¿Cómo cambiar el retraso del hilo de sueño / temporizador en android durante el tiempo de ejecución?
- Android: Alternativa de temporizador / retraso
- Cómo detener el temporizador handler.postDelayed () en Android
- Android: implementa un temporizador de intervalo de 1 segundo antes de llamar a una función
- Cambiar horario scheduleAtFixedRate
- Fiabilidad del método postDelay de Android
- Error de Android: "No se pudo crear la instancia de epoll" o "No se pudo crear el canal de despertador"
Yo recomendaría usar un CountDownTimer
:
final CountDownTimer myTimer = new CountDownTimer(10000, 5000) { @Override public void onFinish() { //DO SOMETHING AFTER 10 000 ms } @Override public void onTick(long millisUntilFinished) { //DO SOMETHING EVERY 5 000 ms until stopped } } myTimer.start() //Starts it myTimer.cancel() //Stops it
Y en lugar de escribir
(new Intent("com.jom.testcdt2.CANCELCLASS")
Deberías usar
(new Intent(YOURCLASS.this, CancelClass.class)
¿Podría intentar tener un valor booleano que compruebe en el bucle while y establecerlo en true cuando pulse el botón Cancelar?
boolean pressedCancel = false; .... while (logoTimer < 10000 && !pressedCancel) { ....
- ¿Por qué convertir System.nanoTime () en un objeto Calendar me da la fecha actual incorrecta?
- Excepción de fecha inescapable