Junior — Middle
Pode explicar o conceito de SupervisorJob no contexto das coroutines Kotlin?
sobes.tech IA
Resposta da IA
O SupervisorJob em Kotlin é um tipo especial de Job usado para gerir um grupo de corutinas, onde um erro numa corutina não cancela as outras. Num Job normal, se ocorrer uma exceção numa corutina filha, todo o Job pai e as suas corutinas filhas são cancelados.
No caso do SupervisorJob, as corutinas funcionam de forma independente: se uma delas terminar com erro, as outras continuam a execução. Isto é útil quando se quer lançar várias tarefas em paralelo e não parar tudo em caso de falha de uma.
Exemplo de uso:
val supervisor = SupervisorJob()
val scope = CoroutineScope(Dispatchers.Default + supervisor)
scope.launch {
launch {
// Esta corutina pode falhar, mas não afetará as outras
throw RuntimeException("Erro")
}
launch {
// Esta corutina continuará a trabalhar
println("A trabalhar")
}
}
Assim, o SupervisorJob ajuda a isolar erros entre corutinas filhas, garantindo uma execução mais robusta de tarefas paralelas.