android 跨活动边界更新可组合状态

yfjy0ee7  于 2023-04-04  发布在  Android
关注(0)|答案(1)|浏览(137)

我正在构建一个android应用程序,它有多个共享数据模型的活动。
数据模型由两层组成:

  • 第一个存储要使用的对象列表,以及将其保存到磁盘的方法。
  • 一个抽象了第一个,以防止我再次删除我的数据。

抽象存储在应用程序类中,以允许所有活动访问它。(这是访问一些Android API以保存到文件所必需的)
然后我还有两个活动,它们将在列表中显示这些数据。
每个活动都有自己的视图模型,通过app类访问这些抽象。
视图模型用于添加和读取这些更改。
当一个活动更改添加项目到列表中时,我需要另一个活动也更新其视图。
实现这一目标的最佳途径是什么?
到目前为止,我已经试了几种方法

  • 由于适配器具有更新功能,所以可以使用回收器视图,但这不适用于合成
  • 我试过在模型中设置可变状态,并将其复制到每个活动中。这不是它的用途。它也不起作用。
  • 我已经将实时数据添加到模型中,然后使用MediatorLiveData来传播它,这几乎可以通过ui来实现,但没有捕获到这一点。
k3bvogb1

k3bvogb11#

正如@chuckj所建议的那样,我读了一篇文章https://dev.to/zachklipp/two-mutables-dont-make-a-right-2kgp,它说用同一个对象设置一个observable的状态不会更新它。
因此,通过使用List.toList()克隆列表,它创建了一个可以设置为实时数据的新对象,从而创建了一个新对象。

相关问题