Sobes.tech
Junior — Middle

Como é que o coroutineScope detecta que as suas corutinas foram canceladas?

sobes.tech IA

Resposta da IA

coroutineScope nas coroutines Kotlin detecta a cancelamento das suas coroutines filhas através do mecanismo de cancelamento do contexto da coroutine. Se uma das coroutines dentro de coroutineScope for cancelada (por exemplo, devido a uma exceção ou cancelamento explícito), então todo o coroutineScope recebe o sinal de cancelamento.

Isto acontece porque todas as coroutines dentro de coroutineScope herdam um CoroutineContext comum, que contém um Job. Quando esse Job é cancelado, todas as coroutines filhas também são canceladas.

Desta forma, coroutineScope monitora o estado das suas coroutines filhas através do contexto comum e reage ao seu cancelamento, interrompendo a execução e lançando uma exceção CancellationException, se necessário.

Exemplo:

suspend fun exemplo() = coroutineScope {
    val job = launch {
        // algum trabalho
        delay(1000)
    }
    delay(500)
    job.cancel() // cancela a coroutine filha
    // coroutineScope detectará o cancelamento e será interrompido
}