如何在多个Activity中使用ViewModel和LiveData观察器?

时间:2019-05-27 13:27:48

标签: java android mvvm kotlin android-jetpack

我通过MVVM模式和google jetpack依赖项开发了一个App。 我有一个SampleViewModel,它有一个我需要它的观察者的方法。 我有两个分别称为FActivitySActivity的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。 现在,我将知道最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

  

但是没有活动吗?

正确。在Android Jetpack开发中,应该将紧密耦合的UI屏幕实现为片段,并且它们可能共享一个公用的ViewModel。欢迎您进行多项活动,但是在不需要共享ViewModel的情况下(例如,主活动和“帮助”屏幕),应将它们与应用程序中的其他活动紧密地结合在一起活动)。