web-dev-qa-db-fra.com

Android ViewModel inside Service (Alternative)

J'ai un service qui fournit une interface utilisateur visible pour l'utilisateur la plupart du temps.

J'expérimentais avec une nouvelle architecture d'application quand je suis arrivé avec un problème.

MyModelviewModel viewModel = ViewModelProviders.of(this).get(MyModelviewModel.class);

Mais comme vous le savez, this ne peut être que AppCompat ou Fragment

Y a-t-il une alternative? ou puis-je mettre l'observateur directement sur mon LiveData comme je mets sur ViewModel

viewModel.getList().observe(Playground.this, new Observer<List<TestEntity>>() {
    @Override
    public void onChanged(@Nullable List<TestEntity> items) {
        recyclerViewAdapter.addItems(items);
    }
});
13
CBeTJlu4ok

LiveData peut être utilisé indépendamment sans ViewModel, vous pouvez utiliser observeForever(Observer<T> observer) ou observe(LifecycleOwner owner, Observer<T> observer) pendant que vous fournissez une instance appropriée de LifecycleOwner, vous pouvez implémenter LifecycleOwner dans votre service ou votre vue.

ViewModelProviders fournit juste un cache de ViewModel pour chaque Fragment ou Activity, vous pouvez créer votre ViewModel directement par new MyModelviewModel().

11
AvatarQing