Kotlin 协程中的 Dispatchers.Main 和 Dispatchers.Default 有什么区别?

Vad*_*ovs 9 android kotlin kotlin-android-extensions kotlin-coroutines

Kotlin 协程中的 Dispatchers.Main 和 Dispatchers.Default 有什么区别?

我使用viewModelScope.launch {}并按预期启动块在 UI 线程上执行。然后我发现它默认为viewModelScope.launch(Dispatchers.Default) {}.

这让我有点困惑,因为我认为我应该用来Dispatchers.Main在 UI 线程上执行操作。

到目前为止,Android 上似乎Dispatchers.Default默认为Dispatchers.Main. 那正确吗?

如果我使用一种或另一种或者它们可以互换,是否有任何缺点?如果它们在 Android 上可以互换,如果将来我会添加对 kotlin 多平台的支持,是否会影响某些事情?

Com*_*are 14

然后我发现它默认为 viewModelScope.launch(Dispatchers.Default) {}。

不,viewModelScope.launch()默认为Dispatchers.Main。Google 会覆盖普通的默认launch()调度程序,即Dispatchers.Default. 我建议始终指定调度程序,而不是让人们猜测在哪种情况下使用哪个调度程序。

那正确吗?

不,对不起。