18

我有一项服务,它提供大多数时间对用户可见的 UI。

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

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);
    }
});
4

2 回答 2

22

LiveData可以独立使用ViewModel,您可以使用observeForever(Observer<T> observer),或者observe(LifecycleOwner owner, Observer<T> observer)当您提供适当的LifecycleOwner实例时,您可以LifecycleOwner在您的服务或视图中实现。

ViewModelProviders只是ViewModel为每个Fragmentor提供一个缓存Activity,您可以ViewModel直接通过new MyModelviewModel().

于 2018-02-10T02:20:06.543 回答
3

初始化

new ViewModel()

onStartCommand
于 2021-12-29T08:55:12.653 回答