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);
}
});
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()
.