Kotlin 协程中的 main-safe 是什么?

Hel*_*oCW 9 kotlin kotlin-coroutines

我正在学习 Kotlin 的协程。文本 A 来自https://codelabs.developers.google.com/codelabs/kotlin-coroutines/#8

Kotlin 协程中的 main-safe 是什么?

这是否意味着系统会在需要时自动在后台线程中运行它们?

withContext(Dispatchers.IO) 这是否意味着我永远不会在 Room 和 Retrofit 操作中使用这些代码?

文本A

Room 和 Retrofit 都使悬挂功能成为主安全的。从 Dispatchers.Main 调用这些挂起函数是安全的,即使它们从网络获取并写入数据库也是如此。

Cal*_*lin 12

对于我作为一名 Android 开发者来说,这个简单的定义非常有意义

当函数不阻止主线程上的 UI 更新时,我们认为该函数是主安全的。

在这里找到它https://developer.android.com/kotlin/coroutines


Ens*_*lic 6

main-safe 对于 Kotlin 协程意味着什么?

你自己逐字引用答案:

从 Dispatchers.Main 调用这些挂起函数是安全的,即使它们从网络获取并写入数据库也是如此。

以及答案

这是否意味着我永远不会在 Room 和 Retrofit 操作中使用诸如 withContext(Dispatchers.IO) 之类的代码?

是:正确(假设您正确配置它们,例如suspend在 Retrofit fun 定义中使用修饰符)。