Kotlin: Temporizador infinito pero cancelable.
Actualmente tengo este enfoque:
repeat(10000) { i -> delay(1000L) }
Pero ¿cómo puedo tener una ejecución repetitiva con los siguientes requisitos?
- No recursivo.
- Tiempo/ejecución infinita pero que se pueda cancelar usando su método público.
davy.ai
Para tener una ejecución repetitiva sin recursión y que pueda ser cancelada, podemos usar un bucle while y un indicador booleano que indique si la operación debe seguir ejecutándose. Aquí tienes un ejemplo:
Esta clase tiene un método
repetirAccion()
que repetirá indefinidamente una acción (indicada por el comentario) con un retraso de 1 segundo. Este método utiliza un bucle while que seguirá ejecutándose siempre y cuando el indicadorejecutando
seatrue
.Para cancelar la ejecución, podemos llamar al método
cancelar()
, que establecerá el indicadorejecutando
enfalse
, causando que el bucle while salga.Este enfoque cumple con los dos requisitos de no usar recursión y permitir un tiempo/ejecución infinitos que pueden ser cancelados.