我们的想法是拥有一个Singleton存储库,它在消费者(ViewModels)之间共享一个LiveData.
class SharedLiveDataRepository(val dataSource: MyDataSource) {
// This LiveData is shared across consumers
private val result = MutableLiveData()
fun loadData(): LiveData {
if (result.value == null) {
result.value = dataSource.getData()
}
return result
}
}
如果由于某种原因您想要刷新数据,则loadItem方法可能如下所示
fun loadData(refresh: Boolean = false): LiveData {
if (refresh == true) {
result.value = null
}
if (result.value == null) {
result.value = dataSource.getData()
}
return result
}
请注意:为了刷新数据,可能会发现故障.
想象一下两个活动之间存在转换的情况,第一个是观察LiveData,第二个是开始刷新它.
我认为上述问题的解决方案是在第一个活动中进行刷新,然后导航到下一个活动.