小编Raj*_*eck的帖子

带有Kotlin-coroutines的房间观察数据库的变化

因此,我最近开始使用协同程序进行实验,我从Rxjava2切换到协同程序,我还没有掌握它但仍然,我遇到了一个需要观察我的数据库更改并更新对应的UI的情况.

RxJava曾经为我提供Flowables,Completeable等,使用它我可以观察到Db的变化.

    abstract fun insert(data: SomeData): Long

    @Query("SELECT * FROM somedata_table")
    abstract fun getData(): Flowable<List<SomeData>>
Run Code Online (Sandbox Code Playgroud)

所以现在这里我曾经订阅了getData并且总是习惯于观察变化

现在输入coroutines,我使用带有延迟结果的暂停函数来返回我的响应

    @Insert(onConflict = OnConflictStrategy.IGNORE)
    abstract fun insert(data: SomeData): Long

    @Query("SELECT * FROM somedata_table")
    abstract fun getData(): List<SomeData>
Run Code Online (Sandbox Code Playgroud)
suspend fun getAllSomeData():Deferred<List<SomeData>>{
        return GlobalScope.async (context= coroutineContext){
            database.myDao().getData()
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在我无法听取更新,协程中的频道可能是正确的答案吗?但我不确定如何使用Room.

android kotlin kotlinx.coroutines

9
推荐指数
2
解决办法
2525
查看次数

标签 统计

android ×1

kotlin ×1

kotlinx.coroutines ×1