1

我有这个查询:

@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 观察 ViewModelviewModel.getData().observe(this, adapter::setMovies)
  • setMovies用 0 个数据调用
  • 几秒钟后 JobService 已启动,加载数据并调用db.movieDao().insertAll(movies.results)

在这一点上,我期待来自 Room 的刷新调用,因为数据库数据已更改但没有任何反应。

4

1 回答 1

0

问题是我的应用程序创建了两个 Room 实例,因为我忘记了@SingletonDagger 模块中的注释

于 2017-06-18T11:46:27.673 回答