连接断开后,Firebase Firestore需要很长时间才能重新连接

时间:2018-07-05 08:28:42

标签: java android firebase google-cloud-firestore

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

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

有关此延迟来自何处以及如何处理的任何想法?真烦人。

1 个答案:

答案 0 :(得分:0)

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

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

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

相关问题