最近我更新了我ViewModel
的使用新的viewModelScope
. 从它的实现来看,我看到它Dispatchers.Main.immediate
被设置CoroutineDispatcher
为viewModelScope
.
所以当打印当前Thread
在viewModelScope.launch
它给Thread[main,5,main]
但这是我的问题。尽管它在主线程中运行,但以下代码对我执行网络调用有效。
viewModelScope.launch {
userRepo.login(email, password)
}
Run Code Online (Sandbox Code Playgroud)
这userRepo.login(email, password)
是suspend
函数,它调用Retrofit
suspend
函数。
那么这是如何工作的,如果我的当前线程是主线程?