gpt4 book ai didi

android - 如何在 Android 应用程序中共享 LiveData 实例?

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

简单用例

我正在使用 MVVM 建筑和Android Architecture Components在我的应用程序中。

用户登录后,我正在获取多个网络数据并希望从不同的 ViewModels 访问它附不同 Activity 生命周期。

我不想使用 Room Persistence Library在我的应用程序中。

我看到了一些关于共享 的问题查看型号 之间 Activity 或使用 LiveData作为静态成员,但我认为大多数情况下我们需要在多个屏幕中访问相同的数据。

我想分享一个解决方案,但如果有更好的解决方案或对此有问题,请发表您的想法。

最佳答案

这个想法是有一个 Singleton 存储库 , 共享一个 实时数据 消费者之间( ViewModels )。

class SharedLiveDataRepository(val dataSource: MyDataSource) {

// This LiveData is shared across consumers
private val result = MutableLiveData<Long>()

fun loadData(): LiveData<Long> {
if (result.value == null) {
result.value = dataSource.getData()
}
return result
}

}
如果出于某种原因您想刷新数据, loadItem方法看起来像这样
  fun loadData(refresh: Boolean = false): LiveData<Long> {
if (refresh == true) {
result.value = null
}
if (result.value == null) {
result.value = dataSource.getData()
}
return result
}
请注意:为了刷新数据,可能会看到故障。
想象一个场景,两个 Activity 之间有转换,第一个是观察 LiveData,第二个开始刷新它。
我认为上述问题的解决方案是在第一个 Activity 中进行刷新,然后导航到下一个 Activity 。

关于android - 如何在 Android 应用程序中共享 LiveData 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56521969/

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