Firestore脱机缓存

Bal*_*ian 17 android firebase google-cloud-firestore

我正在构建一个Android应用程序,它必须离线工作数周,但可以在远程数据库上线时立即同步.

我的问题是,Firestore可以成为一个很好的选择吗?Firestore保留其脱机缓存多长时间?

Fra*_*len 7

可以将Firestore配置为保留数据以进行此类断开连接/脱机使用.我建议您阅读文档中的启用脱机持久性部分,其中包含启用此功能的示例:

FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder()
        .setPersistenceEnabled(true)
        .build();
db.setFirestoreSettings(settings);
Run Code Online (Sandbox Code Playgroud)

这种持久性实际上是在Android和iOS上默认启用的,因此不需要上面的调用.

无论您是否连接,与数据库交互的Android代码都是相同的,因为SDK的工作原理相同.如果要检测数据是否来自缓存(因此可能过时),请阅读文档中的" 收听脱机数据 "一节.

缓存中的数据在一定时间后不会过期.数据从缓存中删除的唯一原因是:

  1. 数据已从服务器中删除,在这种情况下,客户端将从磁盘缓存中删除它.
  2. 客户端需要清除其磁盘缓存以为更新的数据腾出空间.

  • 对不起,如果我不够清楚,但我的问题是Firestore保留其脱机缓存多长时间?我已经阅读了您之前发送的链接,其中包含以下内容:"此功能会缓存您的应用正在使用的Cloud Firestore数据的副本,因此您的应用可以在设备离线时访问数据." "积极使用"究竟意味着什么?如果我在一天或一周后没有访问它,它会删除我的数据吗?我可以配置它以保留我的所有数据,直到我说不? (3认同)
  • 所以如果它决定它需要空间,那么它会删除我的数据吗?在开始删除数据之前,它可以存储多少数据?这对我很重要,因为我需要一个可靠的本地数据库. (3认同)
  • 此时,启用持久性时无法保证。这是一个缓存,而不是有保证的脱机存储。我们希望最终向API添加一种“固定”功能,以使您获得此保证,但是就目前而言,您应该期望缓存可用且有用,但不能保证。 (2认同)