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
}