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



我正在构建一个android应用程序,它有多个活动共享一个数据模型。

数据模型由两层组成:

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

抽象存储在应用程序类中,允许所有活动访问它。(这是需要访问一些android api保存到文件)

然后我还有两个活动,它们将在列表中显示这些数据。

每个活动都有自己的视图模型,通过app类访问这些抽象。

视图模型用于添加和读取这些更改。

当一个活动更改向列表添加项目时,我需要另一个活动也更新它们的视图。

实现这一目标的最佳方法是什么?

到目前为止,我已经尝试了几个方法

  • 使用回收器视图工作是因为适配器具有更新功能。但这对compose
  • 不起作用
  • 我已经尝试在模型中设置可变状态并将其复制到每个活动。这不是用来做这个的。它也不工作。
  • 我将实时数据添加到模型中,然后使用MediatorLiveData来传播它,这几乎可以通过ui来实现。

根据@chuckj的建议,我阅读了文章https://dev.to/zachklipp/two-mutables-dont-make-a-right-2kgp,它指出设置可观察对象的状态,使用相同的对象不会更新它。

因此,通过使用List.toList()克隆列表,它创建了一个可以设置为活动数据的新对象,因此是一个新对象。

最新更新