Ответ
Дочерняя корутина наследует тип Job родителя. Если родитель использует SupervisorJob, дочерняя корутина также получит SupervisorJob. Это означает, что ошибка в одной дочерней корутине не отменит другие дочерние корутины.
val parentJob = SupervisorJob()
val scope = CoroutineScope(Dispatchers.IO + parentJob)
scope.launch {
// Эта корутина тоже будет иметь SupervisorJob
launch {
// Дочерняя корутина с SupervisorJob
}
}
Важно: если явно передать другой тип Job в контексте дочерней корутины, это переопределит наследование.