Android 服务内的 ViewModel(备选)
Android ViewModel inside Service (Alternative)
我有一项服务提供 UI 大多数时间对用户可见。
当我遇到问题时,我正在尝试新的应用程序架构。
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);
}
});
LiveData
可以不用ViewModel
独立使用,你可以使用observeForever(Observer<T> observer)
,或者observe(LifecycleOwner owner, Observer<T> observer)
,同时提供一个合适的LifecycleOwner
实例,你可以在您的服务或视图中实施 LifecycleOwner
。
ViewModelProviders
只是为每个Fragment
或Activity
提供了一个ViewModel
的缓存,你可以直接通过new MyModelviewModel()
创建你的ViewModel
.
初始化为
new ViewModel()
在
onStartCommand
我有一项服务提供 UI 大多数时间对用户可见。
当我遇到问题时,我正在尝试新的应用程序架构。
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);
}
});
LiveData
可以不用ViewModel
独立使用,你可以使用observeForever(Observer<T> observer)
,或者observe(LifecycleOwner owner, Observer<T> observer)
,同时提供一个合适的LifecycleOwner
实例,你可以在您的服务或视图中实施 LifecycleOwner
。
ViewModelProviders
只是为每个Fragment
或Activity
提供了一个ViewModel
的缓存,你可以直接通过new MyModelviewModel()
创建你的ViewModel
.
初始化为
new ViewModel()
在
onStartCommand