Kotlin Coroutines中的主要保险柜有哪些?

时间:2020-04-01 03:24:28

标签: kotlin kotlin-coroutines

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

Kotlin Coroutines中的主要保险柜是什么?

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

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

文本A

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

3 个答案:

答案 0 :(得分:2)

Kotlin协程的主要安全手段是什么?

您从字面上引用答案:

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

答案

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

是:正确(假设您正确配置了它们,例如,在翻新乐趣定义中使用suspend修饰符)。

答案 1 :(得分:0)

对我来说,作为一个Android开发人员,这个简单的定义很完美

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

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

找到了

答案 2 :(得分:0)

请检查此答案以了解 API 调用与改造一起使用而不将调度程序更改为 IO 的确切原因,引用 https://stackoverflow.com/a/61216333/4354001 :

<块引用>

之所以有效是因为 Retrofit 的挂起实现委托给 呼叫入队。这意味着它已经在自己的后台执行 executor 默认情况下,而不是使用调用者的 Dispatcher。