Я обернул голову вокруг сопрограмм, и мне было интересно узнать следующий код.У меня есть следующая операция на моем onCreate () .
asyncJob = GlobalScope.launch(Dispatchers.Main) {
val name = async(Dispatchers.Default) { queryDevices() }.await()
mDeviceName.text = deviceName
}
Печать этого порядка выполнения, по-видимому, происходит до того, как «имя» будет в потоке пользовательского интерфейса, а после того, как имя задано, оно также будет в потоке пользовательского интерфейса. queryDevicesMethod () находится в фоновом потоке, как и ожидалось.
Но я хотел знать, что на самом деле await () делает при вызове в потоке пользовательского интерфейса?Он блокирует поток пользовательского интерфейса до тех пор, пока не будет возвращено ожидание?