我有一项服务,提供用户大部分时间都可以看到的用户界面。
当我遇到问题时,我正在尝试新的应用程序架构。
MyModelviewModel viewModel = ViewModelProviders.of(this).get(MyModelviewModel.class);
但是如你所知this
只能是AppCompat
或Fragment
还有其他选择吗?或者我可以将观察者直接放在LiveData
上,就像我放在ViewModel
viewModel.getList().observe(Playground.this, new Observer<List<TestEntity>>() {
@Override
public void onChanged(@Nullable List<TestEntity> items) {
recyclerViewAdapter.addItems(items);
}
});
答案 0 :(得分:9)
LiveData
可以在没有ViewModel
的情况下独立使用,您可以使用observeForever(Observer<T> observer)
或observe(LifecycleOwner owner, Observer<T> observer)
,同时提供正确的LifecycleOwner
实例,您可以实施{ {1}}在您的服务或视图中。
LifecycleOwner
只为ViewModelProviders
或ViewModel
提供Fragment
的缓存,您可以Activity
直接创建ViewModel
。< / p>