Cómo cancelar el horario existente de un temporizador

Actualmente estoy utilizando un temporizador para ejecutar alguna función cada intervalo de tiempo. Sin embargo, más adelante cuando quiero cambiar el intervalo de ejecución de la función, no puedo cancelar la programación anterior. Cómo se puede resolver esto? Gracias

Con el método timer.cancel() puede cancelar el temporizador y todas las tareas programadas. (Consulte la documentación de la API ) o puede llamar al método de cancelación en su TimerTask timertask.cancel() (consulte la documentación de la API )

Si desea cambiar la hora programada debe cancelar la TimerTask y agregar una nueva TimerTask.

Usted podría mirar en el uso de un ScheduledThreadPoolExecutor en lugar de un Timer .

El uso es bastante sencillo. Se crea una instancia de un ejecutor:

 ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor( 1 ); 

Y, a continuación, cuando desee agregar una tarea a la que llame:

 executor.scheduleAtFixedRate( myRunnable, delay, interval, unit ); 

Cuando myRunnable es su tarea (que implementa la Runnable Runnable), el delay es cuánto tiempo antes de que la tarea se ejecute la primera vez, el interval es el tiempo entre la ejecución de la tarea después de la primera ejecución. delay y el interval son meassured basado en el parámetro unit , que puede ser TimeUnit. * (Donde * es SECONDS, MINUTES, MILLISECONDS etc.).

Entonces para detener la ejecución que usted llama:

 executor.shutdownNow(); 

Y luego puede volver a enviar su tarea con un intervalo diferente.

Nota: Es posible que deba crear una nueva instancia del ejecutor antes de volver a enviar la tarea, pero no estoy muy seguro de por qué.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.