Для чего нужны основные классы в Coroutines

«Для чего нужны основные классы в Coroutines» — вопрос из категории Coroutines и Flow, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

CoroutineScope — определяет границы корутины и управляет её жизненным циклом. Пример:

val scope = CoroutineScope(Dispatchers.Main)
scope.launch { /* работа */ }

Job — представляет собой задачу, которую можно отменить. Позволяет управлять выполнением корутины:

val job = scope.launch { /* работа */ }
job.cancel()

Dispatcher — определяет, на каком потоке будет выполняться корутина. Основные:

  • Dispatchers.Main — UI-поток
  • Dispatchers.IO — для операций ввода-вывода
  • Dispatchers.Default — для CPU-интенсивных задач

CoroutineContext — хранит контекст выполнения (диспетчер, Job, обработчик исключений). Пример:

val context = Dispatchers.IO + Job() + CoroutineExceptionHandler { _, e -> }