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
}