Ответ
Main Dispatcher работает в главном потоке (UI-потоке) и используется для операций с UI. Default Dispatcher предназначен для CPU-интенсивных задач и работает в общем пуле потоков.
Пример:
// UI операции
CoroutineScope(Dispatchers.Main).launch {
updateUi()
}
// Вычисления
CoroutineScope(Dispatchers.Default).launch {
val result = computeHeavyTask()
withContext(Dispatchers.Main) {
showResult(result) // Возвращаемся в Main для UI
}
}
Main Dispatcher доступен только в Android/UI-приложениях, Default доступен везде. Использование не того диспетчера может привести к ANR (если тяжелые задачи в Main) или исключениям при работе с UI (если UI-операции не в Main).