【问题标题】:Does Android Room wait for withTransaction block to finish before proceeding to next lineAndroid Room 是否等待 withTransaction 块完成后再继续下一行
【发布时间】:2021-12-19 09:26:52
【问题描述】:
class MyViewModel(private val db: AppDatabase): ViewModel() {

    suspend fun insertAndRead(pages: List<Page>) {
        db.withTransaction {
            db.pageDao().insertAll(pages)    
        }
        val pagesInserted = db.pageDao().selectAll()
    }
}

我很好奇 Room 处理 withTransaction 块。

让我们以上面的代码示例为例。 Room 是否等待withTransaction 块运行完毕,然后转到下一行?

或者它只是在协程内运行withTransaction 块,然后立即开始下一行而不等待withTransaction 块完成?

【问题讨论】:

  • 为什么你不使用协程。?使用作业它会在作业完成后执行下一行。?

标签: android kotlin android-room kotlin-coroutines


【解决方案1】:

withTransaction() 是一个挂起函数。挂起函数通常通过挂起等待,它们与其调用者同步,它们不调度异步操作。

所以答案是:是的,它等待内部块执行完毕。

【讨论】:

    猜你喜欢
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 2019-11-01
    • 2021-05-06
    • 2021-05-21
    相关资源
    最近更新 更多