Android 服务内的 ViewModel(备选)

Android ViewModel inside Service (Alternative)

我有一项服务提供 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);
    }
});

LiveData可以不用ViewModel独立使用,你可以使用observeForever(Observer<T> observer),或者observe(LifecycleOwner owner, Observer<T> observer),同时提供一个合适的LifecycleOwner实例,你可以在您的服务或视图中实施 LifecycleOwner

ViewModelProviders只是为每个FragmentActivity提供了一个ViewModel的缓存,你可以直接通过new MyModelviewModel()创建你的ViewModel .

初始化为

new ViewModel()

onStartCommand