【问题标题】:How use a ViewModel & LiveData observer in multiple Activity?如何在多个 Activity 中使用 ViewModel 和 LiveData 观察者?
【发布时间】:2019-05-27 13:27:47
【问题描述】:

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

【问题讨论】:

  • 同一活动的片段之间可以共享相同的 ViewModel 对象,但不同的活动不能共享。
  • @JeelVankhede,我明白了,但没办法活动?

标签: java android mvvm kotlin android-jetpack


【解决方案1】:

但没办法活动?

正确。在 Android Jetpack 开发中,紧密耦合的 UI 屏幕应该被实现为片段,并且它们可能共享一个共同的ViewModel。欢迎您拥有多个活动,但它们应该与应用程序中的其他活动非常松散地耦合,以防不需要共享ViewModel(例如,主要活动和“帮助”屏幕活动) .

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多