我正在寻找处理以下用例 wrt LiveData 处理的建议:ViewModel 为 LiveData 调用存储库(例如产品目录)。存储库首先从 LocalDataSource(Room) 检查,但如果数据不可用,则调用 RemoteDataSource(REST API)。
问题:
1) 根据 yigit here的以下评论,存储库在作为观察者订阅之前无法在 Room 中获取 LiveData 可用性状态。因此,即使数据可用,我也会得到 null 作为响应。 “LiveData 是观察数据并将其分发给观察者。在添加活动观察者之前,它不会计算值。”
由于存储库对客户端隐藏数据源,因此存储库有责任签入 Room,然后从远程源中提取。它如何检查 Room 中的数据可用性?
2) 由于 RemoteDataSource 返回的数据不是 LiveData 类型,应该怎么做才能使存储库最终返回 LiveData 给 ViewModel ?
Repository 是否应该首先将数据(来自 RemoteDataSource)插入 Room,然后查询 Room 以返回 LiveData ?它看起来相当昂贵的操作,因为在此过程中会查询 Room 两次。请指教 。谢谢 !