Ответ
Вызов runBlocking на Dispatcher.Main заблокирует главный поток до завершения корутины, что приведёт к ANR (Application Not Responding), если операция внутри корутины занимает больше нескольких секунд.
runBlocking(Dispatchers.Main) {
delay(3000) // ANR после ~5 секунд
// Долгие операции здесь
}
Когда использовать:
- Только для тестирования (в JUnit-тестах)
- Кратковременные синхронные операции (<5ms)
Альтернативы:
- Для асинхронного выполнения используйте
launch/asyncсDispatchers.Main - Для фоновых операций -
Dispatchers.IO/Default