Недавно я обновил свой ViewModel
для использования нового viewModelScope
, который по умолчанию имеет superviserJob
и отменяет обратный вызов job
в ViewModel
* onClear()
. Так что теперь мне не нужно внедрять CourotineScope
и выполнять вышеописанный персонал самостоятельно и просто использовать viewModelScope
. Из его реализации я вижу, что Dispatchers.Main.immediate
установлено по умолчанию CoroutineDispatcher
для viewModelScope
.
Таким образом, при печати текущего Thread
в viewModelScope.launch
это дает Thread [main, 5, main]
Но вот мой вопрос. Хотя это выполняется в главном потоке, у меня работает следующий код, который выполняет сетевой вызов.
viewModelScope.launch {
userRepo.login(email, password)
}
Здесь userRepo.login(email, password)
- это функция suspend
, которая вызывает функцию Retrofit
suspend
.
Так как же это работает, если моя текущая тема является основной?