java如何在多个活动中使用ViewModel和LiveData观察者?
我通过MVVM模式和google jetpack依赖性开发了一个应用程序。
我有一个SampleViewModel
,它有一个我需要的方法。
我有两个名为FActivity
和SActivity
的视图,因为首先我在FActivity
中创建了实例SampleViewModel
,并通过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");
});)
}
}
现在,我将在SActivity
中执行操作enqueue()
方法,并观察FActivity
class SActivity : Acivity{
onCreate(){
val vm = ViewModelsProviders
.of(this)
.get(SampleViewModel::class.java)
vm.enqueue();
}
但我跟踪创建实例ViewModelProviders
的操作,该实例更新实例ViewModel,并且不观察FActivity
。
现在,我将知道最好的方法是什么处理
# 1 楼答案
对。在Android Jetpack开发中,紧密耦合的UI屏幕应该作为片段实现,它们可能共享一个公共
ViewModel
。欢迎您使用多个活动,但如果不需要共享ViewModel
(例如,主活动和“帮助”屏幕活动),则这些活动应与应用程序中的其他活动松散耦合