Sobes.tech
Junior — Middle

¿Se puede interrumpir la ejecución de una Coroutine en cualquier situación?

sobes.tech AI

Respuesta de la IA

En Kotlin, una coroutine no puede ser interrumpida de inmediato y sin condiciones en cualquier situación. Para que una coroutine pueda ser interrumpida correctamente, debe ser "cooperativa", es decir, verificar periódicamente su estado de cancelación y reaccionar a él.

La interrupción se realiza mediante la llamada a cancel(), pero si dentro de la coroutine hay un código bloqueante o que tarda mucho en ejecutarse sin puntos de cancelación (por ejemplo, un ciclo infinito sin verificaciones), no será posible interrumpirla de inmediato.

Por eso, es importante escribir coroutines que soporten cancelación, usando funciones suspend que verifican su estado de cancelación o comprobando manualmente isActive.

Ejemplo:

launch {
    while (isActive) { // verificación de cancelación
        // trabajo
        delay(100) // función suspendible que soporta cancelación
    }
}

Si la coroutine no soporta cancelación, será difícil o imposible interrumpirla.