我读过一篇文章,内容如下:
*如果您使用高级挂起功能、高级RxJava或高级LiveData,备用机房将自动提供主安全性。
**网络库,例如Retrofit和Volley,管理它们自己的线程,当与Kotlin coroutines一起使用时,代码中不需要显式的主安全性。
所以我有两个问题:
?
如上述语句中所述,对于房间/改造,我们是否应该显式地使用dispatcher (在这些情况下类似于IO ),因为它们正在自己处理后台线程。
谷歌搜索了一下,没有得到确切的答案,所以发帖变得清晰起来。
发布于 2022-09-12 07:43:47
runBlocking或withContext )向UI返回值,否则不会阻塞UI。简单的launch (即viewModelScope.launch )不会阻塞线程。
根据文档,
custom dispatcher来处理线程。来自代码实验室文档:
兼有房间和装修,使挂起功能安全.
从Dispatchers.Main调用这些挂起函数是安全的,即使它们从网络获取并写入数据库。“房间”和“重新配置”都使用自定义调度程序,而不使用Dispatchers.IO。
Room将使用配置的默认查询和事务执行程序运行协同器。
改造将在引擎盖下创建一个新的调用对象,并在其上调用队列以异步发送请求。
发布于 2022-09-12 07:54:10
据我所知,
suspend函数时,需要提供一个协同作用域。因此,如果您提供Dispatcher.Main或MainScope,它将阻止UI.。
https://stackoverflow.com/questions/73685803
复制相似问题