我们的想法是拥有一个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,第二个是开始刷新它.

我认为上述问题的解决方案是在第一个活动中进行刷新,然后导航到下一个活动.

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐