【发布时间】:2017-10-11 23:13:13
【问题描述】:
private void subscribeToModel() {
final MyViewModel model = ViewModelProviders.of(this)
.get(MyViewModel.class);
// Update the list when the data changes
model.getItems().observe(this, new Observer<List<Item>>() {
@Override
public void onChanged(@Nullable List<Item> items) {
// Do something useful
}
});
}
上面的代码在“AppCompatActivity”或“FragmentActivity”上运行良好。 但是,它不适用于另一种类型的活动(例如,对我来说:GvrActivity)。 ViewModelProviders.of() 期待“FragmentActivity”。
还有其他观察DB的方法吗?
至于数据库,我使用的是 ROOM。
【问题讨论】:
-
观察房间数据库不需要
ViewModelProviders。从@Query方法返回反应类型(例如,LiveData、Flowable)可以让您观察变化。但是,您需要通过其他方法来处理配置更改(例如,onRetainNonConfigurationInstance(),保留片段)。最后,所有架构组件的VieModel系统所做的就是使用保留的片段。