服务中的 Android ViewModel(替代) [英] Android ViewModel inside Service (Alternative)
问题描述
我有一项服务,它提供的用户界面大部分时间都对用户可见.
I have a service which provides UI that is visible to user most of the time.
当我遇到问题时,我正在试验新的应用程序架构.
I was experimenting with new Application Architecture when I came with a problem.
MyModelviewModel viewModel = ViewModelProviders.of(this).get(MyModelviewModel.class);
但如你所知 this
只能是 AppCompat
或 Fragment
But as you know this
can be only AppCompat
or Fragment
有其他选择吗?或者我可以将观察者直接放在我的 LiveData
上,就像我放在 ViewModel
Is there some alternative? or can I put observer directly on my LiveData
like Im puting on 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
或 observe(LifecycleOwner owner, Observer
当你提供一个合适的 LifecycleOwner
实例时,你可以实现 LifecycleOwner
在您的服务或视图中.
LiveData
can be use independently without ViewModel
,you can use observeForever(Observer<T> observer)
, or observe(LifecycleOwner owner, Observer<T> observer)
while you provide a proper LifecycleOwner
instance, you can implement LifecycleOwner
in your service or view.
ViewModelProviders
只是为每个 Fragment
或 Activity
提供了一个 ViewModel
的缓存,你可以创建你的 ViewModel
直接通过 new MyModelviewModel()
.
ViewModelProviders
just provides a cache of ViewModel
for each Fragment
or Activity
, you can create your ViewModel
directly by new MyModelviewModel()
.
这篇关于服务中的 Android ViewModel(替代)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!