与[Live Data]一起使用coroutines
的最佳方法是使用Room
从数据库中选择一些数据。
这是我的Dao班,有被暂停的选择
@Dao
interface UserDao {
@Query("SELECT * from user_table WHERE id =:id")
suspend fun getUser(id: Long): User
}
在视图模型类的内部,我用viewModelScope
加载用户。
获取用户实体的正确方法吗?
fun load(userId: Long, block: (User?) -> Unit) = viewModelScope.launch {
block(database.load(userId))
}
根据提到的developer android
val user: LiveData<User> = liveData {
val data = database.loadUser() // loadUser is a suspend function.
emit(data)
}
此代码块不起作用
您的房间必须返回LiveData。
改为使用:
@Dao
interface UserDao {
@Query("SELECT * from user_table WHERE id =:id")
fun getUser(id: Long): LiveData<User>
}