Sobes.tech
Junior — Middle

Hoe detecteert coroutineScope dat zijn coroutines zijn geannuleerd?

sobes.tech AI

Antwoord van AI

coroutineScope in Kotlin detecteert de annulering van zijn kind-coroutines via het annuleringmechanisme van de coroutine-omgeving. Als een van de coroutines binnen coroutineScope wordt geannuleerd (bijvoorbeeld door een uitzondering of expliciete annulering), ontvangt de hele coroutineScope het annuleringsteken.

Dit gebeurt omdat alle coroutines binnen coroutineScope een gemeenschappelijke CoroutineContext erven, die een Job bevat. Wanneer deze Job wordt geannuleerd, worden alle kind-coroutines ook geannuleerd.

Op deze manier bewaakt coroutineScope de status van zijn kind-coroutines via de gemeenschappelijke context en reageert op hun annulering door de uitvoering te onderbreken en een CancellationException te werpen, indien nodig.

Voorbeeld:

suspend fun voorbeeld() = coroutineScope {
    val job = launch {
        // wat werk
        delay(1000)
    }
    delay(500)
    job.cancel() // annuleer de kind-coroutine
    // coroutineScope detecteert de annulering en wordt onderbroken
}