如果您遇到了使用 Room 观察式查询在使用 ViewModel 后第二次不触发的问题,可以尝试使用下面的代码示例解决:
在 ViewModel 中声明观察式查询:
private val myQuery = repository.getMyObservableQuery()
fun getMyQuery(): LiveData> = myQuery
然后在 Activity 或 Fragment 中观察:
viewModel.getMyQuery().observe(this, Observer { myList ->
// 更新 UI
})
在上面的代码中,我们将观察式查询存储在 ViewModel 中,并将其公开为公共方法。这样,每次调用该方法时,都会返回最新的查询结果。在 Activity 或 Fragment 中,我们可以观察该方法,并在回调中更新 UI。这样就可以确保每次查询都会触发回调了。