Sobes.tech
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.