有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在多个活动中使用ViewModel和LiveData观察者?

我通过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。 现在,我将知道最好的方法是什么处理


共 (1) 个答案

  1. # 1 楼答案

    But no way for activities?

    对。在Android Jetpack开发中,紧密耦合的UI屏幕应该作为片段实现,它们可能共享一个公共ViewModel。欢迎您使用多个活动,但如果不需要共享ViewModel(例如,主活动和“帮助”屏幕活动),则这些活动应与应用程序中的其他活动松散耦合