Ответ
DefaultDispatcher — это стандартный диспетчер Kotlin Coroutines, используемый для выполнения корутин, если явно не указан другой.
Особенности:
- Использует общий пул потоков (по умолчанию равен количеству ядер CPU).
- Оптимизирован для CPU-интенсивных задач.
- Не подходит для блокирующих операций (IO, сетевые запросы) — для них лучше
Dispatchers.IO.
Как зафиксировать (переопределить):
// В тестах (используя kotlinx-coroutines-test)
runTest {
Dispatchers.setMain(UnconfinedTestDispatcher())
// Тест с корутинами
Dispatchers.resetMain()
}
// В продакшн-коде (не рекомендуется, лучше внедрять через DI)
Dispatchers.setMain(customDispatcher)
⚠️ Фиксация может нарушить работу других корутин, поэтому лучше явно указывать диспетчер при запуске:
viewModelScope.launch(Dispatchers.Default) { ... }