将coroutines
与LiveData结合使用的最佳方法是使用Room
从数据库中选择一些数据。
这是我的Dao班,选择被暂停
@Dao
interface UserDao {
@Query("SELECT * from user_table WHERE id =:id")
suspend fun getUser(id: Long): User
}
在View Model类中,我向用户加载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)
}
这段代码不起作用
答案 0 :(得分:1)
您的房间必须返回LiveData。
改为使用:
@Dao
interface UserDao {
@Query("SELECT * from user_table WHERE id =:id")
fun getUser(id: Long): LiveData<User>
}