В чем разница между Dispatchers.Main и Dispatchers.Default в Kotlin сопрограммах? - PullRequest
2 голосов
/ 08 января 2020

В чем разница между Dispatchers.Main и Dispatchers.Default в Kotlin сопрограммах?

Я использовал viewModelScope.launch {}, и блок запуска, как и ожидалось, выполняется в потоке пользовательского интерфейса. Затем я обнаружил, что по умолчанию это viewModelScope.launch(Dispatchers.Default) {}.

. Это немного смутило меня, так как я подумал, что должен использовать Dispatchers.Main для выполнения операций в потоке пользовательского интерфейса.

Пока что похоже, что на Android Dispatchers.Default по умолчанию установлено значение Dispatchers.Main. Это правильно?

Есть ли какие-либо недостатки, если я использую один или другой, или они взаимозаменяемы? Если они взаимозаменяемы на Android, стоит ли на что-то влиять, если в будущем я добавлю поддержку kotlin multiplatform?

1 Ответ

4 голосов
/ 08 января 2020

Затем я обнаружил, что по умолчанию это viewModelScope.launch (Dispatchers.Default) {}.

Нет, viewModelScope.launch() по умолчанию Dispatchers.Main. Google переопределяет обычный диспетчер launch() по умолчанию, который Dispatchers.Default. Я рекомендую всегда указывать диспетчера, а не заставлять людей угадывать, какой из них используется в каких обстоятельствах.

Это верно?

Нет, извините.

...