小编Ank*_*nkh的帖子

是否可以在返回 LiveData 的 Room @DAO 中编写“挂起”函数?

我正在尝试将 @Dao 对象的所有方法转换为可挂起以供 Kotlin 协程使用。

当我将挂起修饰符添加到工作函数定义并尝试在 Android Studio 中构建时,它无法生成 XXXXDao_Impl.java 类

一个非常精简的例子:

import androidx.lifecycle.LiveData
import androidx.room.*

@Database(entities = [SomeData::class], version = 1)
abstract class SomeDatabase : RoomDatabase() {
    abstract fun getDao(): SomeDataDao
}

@Entity
data class SomeData(@PrimaryKey val id: Int, val name: String)

@Dao
interface SomeDataDao {
    @Query("SELECT * FROM SomeData") // Works
    fun getAllSync(): List<SomeData>

    @Query("SELECT * FROM SomeData") // Works
    suspend fun getAllSuspend(): List<SomeData>

    @Query("SELECT * FROM SomeData") // Works
    fun getAllSyncLiveData(): LiveData<List<SomeData>>

    @Query("SELECT * FROM SomeData") // …
Run Code Online (Sandbox Code Playgroud)

kotlin android-room kotlin-coroutines

5
推荐指数
1
解决办法
3711
查看次数

标签 统计

android-room ×1

kotlin ×1

kotlin-coroutines ×1