es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

  1. No recursivo.
  2. Tiempo/ejecución infinita pero que se pueda cancelar usando su método público.
Tags:  ,

Answer

  1. Avatar for 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:

    class Repetidor {
        private var ejecutando = true
    
        suspend fun repetirAccion() {
            while (ejecutando) {
                // realizar la acción aquí
                delay(1000L)
            }
        }
    
        fun cancelar() {
            ejecutando = false
        }
    }
    

    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 indicador ejecutando sea true.

    Para cancelar la ejecución, podemos llamar al método cancelar(), que establecerá el indicador ejecutando en false, 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.

Comments are closed.