Почему viewModelScope.launch по умолчанию запускается в основном потокеAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Почему viewModelScope.launch по умолчанию запускается в основном потоке

Сообщение Anonymous »

Пока я изучал сопрограммы и способы их правильного использования в приложении для Android, я обнаружил кое-что, что меня удивило.

При запуске сопрограммы с помощью viewModelScope.launch { и установив точку останова внутри лямбды запуска, я заметил, что мое приложение больше не отвечает, поскольку оно все еще находилось в основном потоке.

Это меня смущает, потому что в документации viewModelScope.launch { четко указано:


Запускает новую сопрограмму без блокировки текущего потока


Разве текущая тема не является основной? Какова вся цель запуска, если по умолчанию он не запускается в другом потоке?

Мне удалось запустить его в другом потоке с помощью viewModelScope .launch(Dispatchers.IO){ который работает так, как я ожидал, а именно в другом потоке.

Чего я пытаюсь добиться при запуске< /code> заключается в вызове репозитория и выполнении некоторой работы по вводу-выводу, а именно вызове веб-сервиса и сохранении данных в базе данных комнаты. Поэтому я подумал о том, чтобы вызвать viewModelScope.launch(Dispatchers.IO){ , чтобы выполнить всю работу в другом потоке и в конце обновить результат LiveData.

< р>

Код: Выделить всё

viewModelScope.launch(Dispatchers.IO){
liveData.postValue(someRepository.someWork())
}


Итак, мой второй вопрос: правильный ли это путь?

Подробнее здесь: https://stackoverflow.com/questions/621 ... by-default
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»