引用块
我有单独的类来处理数据获取(使用Room),通常我从中返回LiveData对象列表并对其进行更新。现在我有一个设置类,当我按下“备份”时,我想将返回的数据存储在ViewModel中,但问题是为了获取该值,我需要观察LiveData对象列表。我不想观察它,因为我只需要值(对象列表)来执行备份。 我尝试了以下方法:
DAO
@Query("SELECT * FROM $DATABASE_TABLE_GOAL")
suspend fun getAllGoals_NotLive(): List<Goal>
视图模型
var goals_NotLive: List<Goal> = ArrayList()
fun getGoalsNotLive(){
_uiScope.launch {
withContext(Dispatchers.IO) {
goals_NotLive = database.goalDao.getAllGoals_NotLive()
}
}
}
活动
fun getGoals(): List<Goal>{
_viewModel.getGoalsNotLive()
return _viewModel.goals_NotLive
}
但仍返回大小为 0。我该怎么办?
getValue()
返回null
,则说明您的LiveData
尚未有任何数据。在DAO上添加另一个实现阻塞调用的方法,然后将其用于备份(必须在后台线程中执行)。 - CommonsWare