服务中的 Android ViewModel(替代) [英] Android ViewModel inside Service (Alternative)

查看:26
本文介绍了服务中的 Android ViewModel(替代)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一项服务,它提供的用户界面大部分时间都对用户可见.

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 只能是 AppCompatFragment

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;observer)observe(LifecycleOwner owner, Observerobserver) 当你提供一个合适的 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 只是为每个 FragmentActivity 提供了一个 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆