Зачем нужны стандартные Dispatchers

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

Ответ

Стандартные Dispatchers в Kotlin Coroutines предоставляют готовые потоки для выполнения задач в разных контекстах:

  • Dispatchers.Main - работа с UI (только в Android/JavaFX)
  • Dispatchers.IO - для блокирующих операций (сеть, БД, файлы)
  • Dispatchers.Default - для CPU-интенсивных задач (сортировки, вычисления)
  • Dispatchers.Unconfined - не привязан к конкретному потоку (используется редко)

Пример:

viewModelScope.launch(Dispatchers.IO) {
    val data = repository.fetchData() // Блокирующая операция
    withContext(Dispatchers.Main) {
        updateUI(data) // Обновление UI
    }
}

Использование правильного диспетчера важно для производительности и предотвращения блокировки UI.