Что такое CoroutineDispatcher

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

Ответ

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

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

Пример:

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

Можно создавать свои диспетчеры через newSingleThreadContext() или newFixedThreadPoolContext(), но это не рекомендуется из-за утечек ресурсов.