runBlocking — это корутин-билдер, который блокирует текущий поток до тех пор, пока все корутины внутри него не завершатся. Он действует как мост между обычным синхронным кодом и кодом на основе корутин.
В отличие от других корутин-билдеров, таких как launch или async, runBlocking не возвращается сразу же. Вместо этого он удерживает вызывающий поток до тех пор, пока блок корутины не завершится:
fun main() = runBlocking {
delay(1000L)
println("Done")
}
main() — служат точкой входа для запуска корутинrunBlocking на главном потоке Android (UI-потоке) в продакшн-кодеviewModelScope, lifecycleScope)runBlocking нарушает неблокирующую природу корутин, занимая поток. Он существует исключительно как мост совместимости для окружений, которые не знают о корутинах. В реальных Android или серверных приложениях отдавай предпочтение инструментам структурированного параллелизма, таким как CoroutineScope или скоупы, предоставляемые фреймворком.
runBlocking возвращает результат сразу и планирует выполнение корутины асинхронно на фоновом диспетчере, подобно тому, как ведёт себя launch.
Новый — ещё не проверен сообществом
Вы