我正在尝试在我的应用程序中学习和实现带有数据绑定(bind)的 MVVM。但我在理解/决定几件事方面面临困难。
我的应用程序中有一个标题 View ,我需要在多个 Activity 中使用它,所以我基本上创建了这个
view_header.xml
HeaderViewModel.java (implements java.util.Observer)
HeaderDataModel.java (extends java.util.Observable)
在哪里
HeaderViewModel
与 view_header.xml
绑定(bind).现在我包括
view_header.xml
在 activity_xyz.xml
& 从中设置标题 View 的 ViewModel XyzActivity
像这样,xyzViewBinding.setHeaderVm(new HeaderViewModel(new HeaderDataModel(mContext)));
现在我有基于此的问题:
1) 作为
HeaderDataModel
需要上下文才能使用 SharedPreference
& BroadcastReceiver
,我在XyzActivity
里面初始化它而不是 HeaderViewModel
- 这是正确的方法吗?2) 我不得不依赖广播接收器来更新我的标题 View ,所以我在
HeaderDataMode
的构造函数中注册了它.现在作为我的HeaderDataModel
是 Observable
,每当我收到广播时,我都会调用notifyObservers()
以便观察者(HeaderViewModel)检测到它并更新它的 View 。-这是正确的方法吗?3) 当我在 HeaderDataModel 的构造函数中注册接收器时,我在数据模型中创建了 onDestroy() 方法,并在其中取消注册它并从 XyzActivity 的 onDestroy() 调用这个 onDestroy。-这是正确的方法吗?
最佳答案
关于带有上下文的 Android MVVM 数据模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45366819/