Junior — Middle
Kako implementirati funkcionalnost sličnu SupervisorJob-u bez njegovog uvođenja?
sobes.tech АИ
Одговор од АИ
SupervisorJob u Kotlin Coroutines omogućava da deca korutine rade nezavisno: greška u jednoj ne otkazuje ostale. Da biste implementirali slične ponašanje bez SupervisorJob, možete ručno upravljati životnim ciklusom korutina i obrađivati izuzetke tako da oni ne dovode do otkazivanja roditeljske korutine.
Primer:
val parentJob = Job()
fun launchIndependentCoroutine(scope: CoroutineScope, block: suspend () -> Unit) {
scope.launch(parentJob) {
try {
block()
} catch (e: Throwable) {
// Obrada greške da ne otkaže parentJob
println("Greška u dečjoj korutini: ${e.message}")
}
}
}
// Upotreba
launchIndependentCoroutine(CoroutineScope(Dispatchers.Default)) {
// kod korutine
}
Na ovaj način, greške u dečjim korutinama neće otkazati roditeljski Job, što imituje ponašanje SupervisorJob.