Android ViewModel内部服务(替代)

时间:2018-02-10 02:07:17

标签: android mvvm android-livedata android-viewmodel

我有一项服务,提供用户大部分时间都可以看到的用户界面。

当我遇到问题时,我正在尝试新的应用程序架构。

MyModelviewModel viewModel = ViewModelProviders.of(this).get(MyModelviewModel.class);

但是如你所知this只能是AppCompatFragment

还有其他选择吗?或者我可以将观察者直接放在LiveData上,就像我放在ViewModel

上一样
viewModel.getList().observe(Playground.this, new Observer<List<TestEntity>>() {
    @Override
    public void onChanged(@Nullable List<TestEntity> items) {
        recyclerViewAdapter.addItems(items);
    }
});

1 个答案:

答案 0 :(得分:9)

LiveData可以在没有ViewModel的情况下独立使用,您可以使用observeForever(Observer<T> observer)observe(LifecycleOwner owner, Observer<T> observer),同时提供正确的LifecycleOwner实例,您可以实施{ {1}}在您的服务或视图中。

LifecycleOwner只为ViewModelProvidersViewModel提供Fragment的缓存,您可以Activity直接创建ViewModel。< / p>