我想确保可以离线保存数据。如何将Room中的数据与Firestore同步?当必须同时更新Room Firestore中插入的内容时。
答案 0 :(得分:0)
Firestore已经包含一个持久层,您根本不需要Room。您可以像这样启用离线支持:
val settings = FirebaseFirestoreSettings.Builder()
.setPersistenceEnabled(true)
.build()
db.firestoreSettings = settings
使用Firestore进行持久性处理比Room具有许多好处(除了节省的工作量和潜在的错误)。如果您例如加载城市中的所有餐厅,然后离线,然后在例如上运行查询最好的餐馆,即使该查询从未在线运行,它仍然可以使用并使用缓存的数据。
您还可以配置Firestore用来满足需要的缓存大小。文档以LRU方式缓存,因此,长时间未使用的文档将在缓存满后首先从缓存中删除。
最佳做法是始终使用快照侦听器。如果您以离线模式启动查询,并且设备恢复在线状态,Firestore将自动与服务器再次运行查询,并将更新后的结果返回到用户界面。
查看docs和this video about Firestore offline mode以获得更多详细信息。