ほとんどの場合ユーザーに表示される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
は、ViewModel
またはFragment
ごとにActivity
のキャッシュを提供するだけです。new MyModelviewModel()
を使用して、ViewModel
を直接作成できます。