Thread.sleep внутри корутины на главном потоке
Разработчик хотел сделать паузу перед показом результата и написал:
viewModelScope.launch {
Thread.sleep(3_000)
_state.value = Ready
}
Что увидит пользователь?
- Интерфейс замрёт на три секунды: sleep блокирует поток, на котором выполняется корутина
- Корутина завершится с исключением: блокирующие вызовы внутри тела корутины запрещены и проверяются на этапе выполнения
- Пауза будет проигнорирована: внутри корутины блокировка потока не действует, состояние обновится мгновенно
- Ничего страшного: корутина по умолчанию выполняется в фоновом потоке, поэтому интерфейс продолжит отвечать на нажатия
