studio ejemplo android timer

ejemplo - ¿Cómo detener el temporizador en android?



timer android studio stack overflow (7)

Estoy desarrollando una aplicación que envía un mensaje a un número específico en un período de tiempo específico. El problema es que continúa enviando ese mensaje después de ese período de tiempo. ¿Cómo puedo detener el temporizador después de ese tiempo específico para dejar de enviar ese mensaje?


¿Dice que el temporizador () no está disponible en Android? Usted puede encontrar este artículo útil.

http://developer.android.com/resources/articles/timed-ui-updates.html

Estaba equivocado. El temporizador () está disponible. Parece que lo implementas de la manera en que se realiza una sola operación:

schedule(TimerTask task, Date when) // Schedule a task for single execution.

O lo cancelas después de la primera ejecución:

cancel() // Cancels the Timer and all scheduled tasks.

http://developer.android.com/reference/java/util/Timer.html


En java.util.timer se puede usar .cancel() para detener el temporizador y borrar todas las tareas pendientes.


Podemos programar el temporizador para que haga el trabajo. Después del final de la hora, el mensaje no se enviará.

Este es el código.

Timer timer=new Timer(); timer.scheduleAtFixedRate(new TimerTask() { @Override public void run() { //here you can write the code for send the message } }, 10, 60000);

Aquí el método que estamos llamando es,

public void scheduleAtFixedRate (tarea TimerTask, gran retraso, largo período)

Aqui aqui

tarea : la tarea a programar

retraso : cantidad de tiempo en milisegundos antes de la primera ejecución.

período : cantidad de tiempo en milisegundos entre ejecuciones posteriores.

Para más información puedes consultar: Android Developer

Puede detener el temporizador llamando,

timer.cancel();


Tuve un problema similar y fue causado por la colocación de la inicialización del temporizador.

Fue colocado en un método que fue invocado a menudo.

Prueba esto:

Timer waitTimer; void exampleMethod() { if (waitTimer == null ) { //initialize your Timer here ... }

El método "cancelar ()" solo canceló el último temporizador. Los mayores fueron ignorados y no dejaron de correr.


Tuve un problema similar: cada vez que presiono un botón en particular, creo un nuevo temporizador.

my_timer = new Timer("MY_TIMER"); my_timer.schedule(new TimerTask() { ... }

Saliendo de esa actividad borré el temporizador:

if(my_timer!=null){ my_timer.cancel(); my_timer = null; }

Pero no fue suficiente porque el método cancel() solo canceló el último temporizador. Los mayores fueron ignorados y no dejaron de correr. El método de purge() no fue útil para mí. Resolví el problema simplemente comprobando la instanciación del Timer :

if(my_timer == null){ my_timer = new Timer("MY_TIMER"); my_timer.schedule(new TimerTask() { ... } }


y .. debemos llamar "waitTimer.purge ()" para el GC. Si ya no usas Timer, "purge ()" !! "purge ()" elimina todas las tareas canceladas de la cola de tareas.

if(waitTimer != null) { waitTimer.cancel(); waitTimer.purge(); waitTimer = null; }


CountDownTimer waitTimer; waitTimer = new CountDownTimer(60000, 300) { public void onTick(long millisUntilFinished) { //called every 300 milliseconds, which could be used to //send messages or some other action } public void onFinish() { //After 60000 milliseconds (60 sec) finish current //if you would like to execute something when time finishes } }.start();

para detener el temporizador temprano:

if(waitTimer != null) { waitTimer.cancel(); waitTimer = null; }