gpt4 book ai didi

java - 连接丢失后 Firebase Firestore 需要很长时间才能重新连接

转载 作者:太空宇宙 更新时间:2023-11-04 10:20:55 26 4
gpt4 key购买 nike

我正在使用 Cloud Firestore 构建 Android 应用程序。具体来说,我使用实时订阅(快照监听器)。并注意到一个奇怪的行为。

当互联网连接丢失时,最终我无法从 Firestore 获取任何数据(考虑到它的离线缓存为空)。当连接恢复时,我在 30-50 秒内仍然没有收到任何数据。只有在那之后,相当长的一段时间后,Firestore 才会再次提供数据。

您知道这种延迟从何而来以及如何处理吗?实在是太烦人了。

最佳答案

当设备处于离线状态时,如果您启用了离线持久性(在 Firestore 中默认启用),则当本地缓存的数据发生更改时,您的监听器将收到监听事件。第一次附加监听器时,Firestore 将访问网络以下载查询的所有结果并为您提供 QuerySnapshot 对象。如果您第二次附加相同的监听器并且使用脱机持久性,则监听器将立即使用缓存中的结果触发。获得缓存结果后,Firestore 将与服务器检查以查看您的查询结果是否有任何更改。如果是,您将获得包含更改的另一个快照。

请注意,如果您使用 get() 调用,Firestore 仍会首先尝试连接网络,以便为您提供尽可能最新的数据。如果您改用 addSnapshotListener(),Firestore 将立即使用缓存的数据调用您,而无需等待网络。这就是为什么您在重新上线和实际同步之间有这么长的时间。

您也可以看看我对此的回答post

关于java - 连接丢失后 Firebase Firestore 需要很长时间才能重新连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51186624/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com