Sobes.tech
Junior — Middle

¿Cómo se detienen y suspenden las corutinas en aplicaciones asíncronas?

sobes.tech AI

Respuesta de la IA

En Kotlin, las corrutinas se gestionan mediante objetos Job y CoroutineScope. Para pausar y detener las corrutinas, se utilizan los siguientes mecanismos:

  • Pausa — las corrutinas pueden ser pausadas usando la palabra clave suspend y funciones que pausan su ejecución (por ejemplo, delay()). Esto no bloquea el hilo, sino que la corrutina se reanuda más tarde.

  • Cancelación (detención) — las corrutinas pueden ser canceladas llamando al método cancel() en su Job. Al cancelar, la corrutina recibe una excepción CancellationException y debe finalizar correctamente.

Ejemplo de cancelación de una corrutina:

val job = CoroutineScope(Dispatchers.Default).launch {
    repeat(1000) { i ->
        println("Trabajando $i ...")
        delay(500)
    }
}

// Detener la corrutina después de 2 segundos
CoroutineScope(Dispatchers.Default).launch {
    delay(2000)
    job.cancel()
    println("Corrutina cancelada")
}

Por lo tanto, la pausa es una parte natural del trabajo de las corrutinas, y la detención es su cancelación mediante Job.