【问题标题】:Save data from Firestore localy在本地保存 Firestore 中的数据
【发布时间】:2018-12-17 09:44:26
【问题描述】:

在本地保存数据(从 Firestore 获取数据后)的最佳方法是什么?

我不想再重新加载它,而只想获取更新。现在,每次打开带有新闻的片段时,我都必须重新加载数据。现在一切正常,但是当重新加载出现时让我很恼火。

我正在使用onSuccessListenerOnCompleteListener

ref.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() { ... }

【问题讨论】:

  • Firebase 并非旨在遵循离线优先策略,而这正是您所需要的。在您的情况下,我可以看到的解决方案是您还必须使用 SQLite 数据库以及 Firestore,并自己设计整个模型层以服务于“离线优先策略”。

标签: android firebase android-recyclerview google-cloud-firestore


【解决方案1】:

对于 Android 和 iOS,offline persistence 默认启用。这意味着 Firestore 会创建数据库的本地副本,因此即使离线也可以进行查询。因此,如果您有一个数据库并且没有任何更改,那么您将查询数据库的缓存版本。当有新数据可用时,只会下载该数据。

【讨论】:

  • 我了解离线功能。我想在加载后保存数据,因为下次我打开片段数据再次下载,需要时间
  • 同意,它有离线支持,但我怀疑 FireStore 是否知道“离线优先策略”。
  • 当您使用get() 调用时,我看到您的代码,这意味着您只获取一次数据。因此,第二次打开您从缓存而不是 Firebase 服务器获取的活动。但不要将 Cloud Firestore 用作离线数据库。它实际上是作为一个在线数据库设计的,可以在断开连接的中短时间段内工作。如果您只需要一个离线数据库,那么只需使用 Room,正如 Chintan Soni 在他的评论中提到的那样。
  • 有没有办法将该数据保存到内部存储中,而不是保存在缓存中。如果当用户进行一些深度清理时它停留在缓存中,其他缓存可能会被删除。
  • @CodeREDInnovations 如果需要,您可以将数据保存在本地数据库中。
猜你喜欢
  • 2018-12-16
  • 2021-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-06
  • 2021-02-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多