¿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
suspendy 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 suJob. Al cancelar, la corrutina recibe una excepciónCancellationExceptiony 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.