存储库类内部的协程作用域
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了存储库类内部的协程作用域相关的知识,希望对你有一定的参考价值。
假设我有一个Dto列表,我想遍历它们并设置一些值,然后将它们插入/更新到我的Room数据库中。因此,从ViewModel调用存储库类,在其中运行循环,然后调用dao.insertItems(list)。
fun updateItems(itemList: List<ItemDto>) {
val readDate = DateUtils.getCurrentDateUTCtoString()
???SCOPE???.launch(Dispatchers.IO) {
for (item in itemList)
item.readDate = readDate
itemDao.updateItems(itemList)
}
}
问题是我必须在Repository类中使用哪种CourtineScope。我是否必须使用Dispatchers.Main ..创建一个repositoryScopeScope?也许是GlobalScope ..?
答案
您应该像这样将您的存储库API编写为suspend
函数,>
suspend fun updateItems(itemList: List<ItemDto>) = withContext(Dispatchers.IO) {
val readDate = DateUtils.getCurrentDateUTCtoString()
for (item in itemList)
item.readDate = readDate
itemDao.updateItems(itemList)
}
以上是关于存储库类内部的协程作用域的主要内容,如果未能解决你的问题,请参考以下文章
我如何才能等到我的 Android 应用程序中的协程作用域执行完成?