👉 Что такое runBlocking?
Функция, которая запускает новую корутину и блокирует текущий поток до её завершения.
Часто используется в примерах для демонстрации корутин в
main() функции.👉 Почему стоит быть осторожным с runBlocking в Android?
Блокирует текущий поток, что на Android может привести к замораживанию UI и возникновению ANR (Application Not Responding).
Особенно критично при выполнении операций ввода-вывода в главном потоке.
👉 Пример неправильного использования:
class MainViewModel(private val mainRepository: MainRepository) : ViewModel() {
// Не рекомендуется
private fun fetchPosters() = runBlocking {
mainRepository.fetchPosters()
}
}В этом примере
runBlocking блокирует главный поток, что может привести к проблемам с отзывчивостью приложения.👉 Альтернативы:
Используйте
viewModelScope для запуска корутин, что обеспечивает автоматическую отмену задач при уничтожении ViewModel.Применяйте launch или async для асинхронных операций без блокировки главного потока.