Sobes.tech
Junior — Middle

Ako zistí coroutineScope, že jeho korutiny boli zrušené?

sobes.tech AI

Odpoveď od AI

coroutineScope v Kotlin korutinách detekuje zrušenie svojich detských korutín prostredníctvom mechanizmu zrušenia kontextu korutiny. Ak je jedna z korutín vo vnútri coroutineScope zrušená (napríklad kvôli výnimke alebo explicitnému zrušeniu), celý coroutineScope dostane signál zrušenia.

K tomu dochádza, pretože všetky korutiny vo vnútri coroutineScope dedičia spoločný CoroutineContext, ktorý obsahuje Job. Keď je tento Job zrušený, všetky detské korutiny sú tiež zrušené.

Týmto spôsobom coroutineScope sleduje stav svojich detských korutín cez spoločný kontext a reaguje na ich zrušenie, prerušujúc vykonávanie a vyhadzujúc výnimku CancellationException, ak je to potrebné.

Príklad:

suspend fun príklad() = coroutineScope {
    val job = launch {
        // nejaká práca
        delay(1000)
    }
    delay(500)
    job.cancel() // zrušíme detskú korutinu
    // coroutineScope zistí zrušenie a prerušení sa
}