SetInterval en Android con Kotlin

Antonio Huerta Reyes - Mar 19 '22 - - Dev Community

Durante mis inicios como desarrollador en más de una ocasión me encontré con el problema de tener que realizar alguna operación repetitiva cada «N» cantidad de tiempo, por aquellos días mis mejores soluciones dentro del mundo Android rondaban el crear una instancia de la clase Timer y una TimerTask así cuando esta terminara, reiniciaba una vez más el proceso.

Sin embargo como se puede suponer esta no es la mejor manera de realizarlo, dentro de Android gracias al profiler podía detectar que al estar haciendo este proceso con una función, el mismo se estaba convirtiendo en uno recursivo y por ende el consumo de memoria aunque pequeño crecía.

Pasado algún tiempo y leyendo la documentación de Kotlin en busca de mejorar mis soluciones y aprender más sobre el lenguaje me encontré con una herramienta que desde ese entonces me ha ayudado a mejorar mi programación cuando de intervalos se trata.

Dentro de Kotlin existe una biblioteca que proporciona herramientas útiles para la programación concurrente.

La programación concurrente es la ejecución simultánea de múltiples tareas interactivamente. Estas tareas pueden ser un conjunto de procesos o hilos de ejecución creados por un único programa.

Por ahora nos centraremos en una función que sera fixedRateTimer, en pocas palabras esta función crea un temporizador que ejecuta la acción especificada periódicamente, comenzando después del initialDelay especificado (expresado en milisegundos) y con el intervalo de milisegundos de período entre el inicio de la tarea anterior y el inicio de la siguiente.

A continuación les comparto un ligero ejemplo donde imprimiremos un mensaje de Hola mundo cada 5 segundos

Example

El resultado seria el siguiente:

Example gif

Así mismo esta función retorna una instancia de Timer con lo cual podemos obtener una referencia y cancelar el proceso una vez que nuestro trabajo repetitivo haya finalizado. Quedando una nueva versión del código en donde queremos finalizar el trabajo tras 5 repeticiones de la siguiente manera.

Example

Esta misma función puede aceptar aparte de un delay al inicio también una fecha exacta para ejecutarse, te recomiendo leer más en la documentación oficial para conocer todas las posibilidades que existen.

Espero te haya gustado este articulo, nos seguimos viendo en el futuro.

. . .