我有这个查询:
@Query("SELECT * FROM Movie")
LiveData<List<Movie>> getAll();
这是我的视图模型:
public class MainActivityViewModel extends ViewModel {
@Inject AppDatabase db;
private LiveData<List<Movie>> data;
public MainActivityViewModel() {
MovieApp.graph().inject(this);
data = db.movieDao().getAll();
}
LiveData<List<Movie>> getData() {
return data;
}
}
在我的活动的 onCreate 中,我调用:
viewModel.getData().observe(this, adapter::setMovies);
在JobService 中,我下载了一个 Json 并将其转换为Room对象并调用
db.movieDao().insertAll(movies.results);
但什么也没发生:-(
我必须手动触发房间刷新还是会自动为我触发房间刷新?我错过了什么吗?
编辑:
我添加了一些注销,这是到目前为止按此顺序发生的情况:
MainActivityViewModel
创建并调用db.movieDao().getAll()
- Activity 观察 ViewModel
viewModel.getData().observe(this, adapter::setMovies)
setMovies
用 0 个数据调用- 几秒钟后 JobService 已启动,加载数据并调用
db.movieDao().insertAll(movies.results)
在这一点上,我期待来自 Room 的刷新调用,因为数据库数据已更改但没有任何反应。