Ответ
Scope корутины — это контекст, в котором выполняется корутина. Он содержит:
- Job — управляет жизненным циклом корутины (запуск, отмена, завершение).
- Dispatcher — определяет поток выполнения (Main, IO, Default).
- CoroutineContext — объединяет Job и Dispatcher, может включать исключения (CoroutineExceptionHandler).
Пример:
val scope = CoroutineScope(Dispatchers.IO + Job())
scope.launch {
// код корутины
}
При отмене Job (scope.cancel()) все дочерние корутины тоже отменяются. Scope гарантирует структурированную отмену и избегает утечек.