我通过MVVM模式和google jetpack依赖项开发了一个App。
我有一个SampleViewModel
,它有一个我需要它的观察者的方法。
我有两个分别称为FActivity
和SActivity
的View,首先我在SampleViewModel
中创建了实例FActivity
,并通过ViewModel将观察者订阅到LiveData:
class FActivity : Acivity{
onCreate(){
val vm = ViewModelsProviders
.of(this)
.get(SampleViewModel::class.java)
vm.liveData.observe(this, Observer { basic ->
Log.i("TAG", "Yes I received from SActivity");
});)
}
}
现在,我将在enqueue()
中操作SActivity
方法,并观察FActivity
class SActivity : Acivity{
onCreate(){
val vm = ViewModelsProviders
.of(this)
.get(SampleViewModel::class.java)
vm.enqueue();
}
但是我跟踪创建实例ViewModelProviders
的操作,该实例续订了实例ViewModel,但没有观察到FActivity
。
现在,我将知道最好的方法是什么?
答案 0 :(得分:1)
但是没有活动吗?
正确。在Android Jetpack开发中,应该将紧密耦合的UI屏幕实现为片段,并且它们可能共享一个公用的ViewModel
。欢迎您进行多项活动,但是在不需要共享ViewModel
的情况下(例如,主活动和“帮助”屏幕),应将它们与应用程序中的其他活动紧密地结合在一起活动)。