gpt4 book ai didi

带有上下文的 Android MVVM 数据模型

转载 作者:行者123 更新时间:2023-12-03 10:43:02 25 4
gpt4 key购买 nike

我正在尝试在我的应用程序中学习和实现带有数据绑定(bind)的 MVVM。但我在理解/决定几件事方面面临困难。

我的应用程序中有一个标题 View ,我需要在多个 Activity 中使用它,所以我基本上创建了这个

view_header.xml
HeaderViewModel.java (implements java.util.Observer)
HeaderDataModel.java (extends java.util.Observable)

在哪里 HeaderViewModelview_header.xml 绑定(bind).
现在我包括 view_header.xmlactivity_xyz.xml & 从中设置标题 View 的 ViewModel XyzActivity像这样,
xyzViewBinding.setHeaderVm(new HeaderViewModel(new HeaderDataModel(mContext)));

现在我有基于此的问题:

1) 作为 HeaderDataModel需要上下文才能使用 SharedPreference & BroadcastReceiver ,我在 XyzActivity里面初始化它而不是 HeaderViewModel - 这是正确的方法吗?

2) 我不得不依赖广播接收器来更新我的标题 View ,所以我在 HeaderDataMode 的构造函数中注册了它.现在作为我的 HeaderDataModelObservable ,每当我收到广播时,我都会调用 notifyObservers()以便观察者(HeaderViewModel)检测到它并更新它的 View 。-这是正确的方法吗?

3) 当我在 HeaderDataModel 的构造函数中注册接收器时,我在数据模型中创建了 onDestroy() 方法,并在其中取消注册它并从 XyzActivity 的 onDestroy() 调用这个 onDestroy。-这是正确的方法吗?

最佳答案

  • 由于 HeaderDataModel 需要上下文才能与 SharedPreference 和 BroadcastReceiver 一起使用,我在 XyzActivity 而不是 HeaderViewModel 中对其进行了初始化——这是正确的方法吗? - 不,这是错误的。您必须在 HeaderDataModel 中对其进行初始化,因此稍后如果您想更新 HeaderDataModel,您可以轻松完成。
  • 我不得不依赖广播接收器来更新我的标题 View ,所以我在 HeaderDataMode 的构造函数中注册了它。现在,由于我的 HeaderDataModel 是可观察的,每当我收到广播时,我都会调用 notifyObservers() 以便观察者(HeaderViewModel)检测到它并更新它。-这是正确的方法吗? - 是的,正如我在第一点所说的那样。
  • 当我在 HeaderDataModel 的构造函数中注册接收器时,我在数据模型中创建了 onDestroy() 方法,并在其中取消注册它并从 XyzActivity 的 onDestroy() 调用这个 onDestroy。-这是正确的方法吗? - 是的。在 HeaderDataModel 类中公开 ondestroy() 方法。
  • 关于带有上下文的 Android MVVM 数据模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45366819/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com