android– 在Firebase中启用持久性时实际发生了什么?

android– 在Firebase中启用持久性时实际发生了什么?,第1张

概述在iOS中打开Firebase的持久性时,我的观察者实际发生了什么以及他们在技术层面的表现如何?我很清楚它应该如何在基于此https://www.firebase.com/docs/ios/guide/offline-capabilities.html的高级别上运行–Firebase基本上保留了您可以在离线时访问的数据的缓存副本.我不明白的

在iOS中打开Firebase的持久性时,我的观察者实际发生了什么以及他们在技术层面的表现如何?

我很清楚它应该如何在基于此https://www.firebase.com/docs/ios/guide/offline-capabilities.html的高级别上运行 – Firebase基本上保留了您可以在离线时访问的数据的缓存副本.

我不明白的是我的观察者应该多少次射击以及有什么信息.

> firebase是否始终首先使用任何缓存数据触发我的观察者(如果没有任何数据则为null),然后是服务器数据.
>或者它是否仅发送缓存数据(如果存在),后跟服务器数据.
>在持久模式下,observerSingleValue和连续观察者的行为之间是否有任何区别?

启用了持久性的应用程序中,我注意到:

> Firebase只发送服务器数据
> Firebase发送缓存数据(如果存在),然后发送服务器数据.
> Firebase发送缓存数据,如果不存在则返回null,后跟服务器数据.

清除它很好,所以我们知道哪个应该是正常的行为:)

解决方法:

它实际上非常简单.当您附加观察者时(无论是使用observeEventType还是observeSingleEventOfType),Firebase将:

>立即使用任何完整的缓存数据引发事件.
>从服务器请求更新的数据,当它到达时,如果数据与缓存的数据不同,则引发新事件.

尽管如此,还有一些细微之处:

>如果完成,我们只会使用缓存数据引发事件.这意味着:

>如果我们没有缓存数据(您之前没有观察过此位置),我们将不会引发null或类似的事件.在我们从服务器获取数据之前,您不会收到任何事件.
>如果您有此位置的部分数据(例如,您之前观察过/ foo / bar但现在您正在观察/ foo),您将获得完整孩子的ChildAdded事件(例如/ foo / bar),但您将无法获得一个Value事件(例如for / foo),直到我们从服务器获取您正在观察的位置的完整数据.

>如果你正在使用observeSingleEventOfType,那么你明确只要求一个事件,所以如果你有缓存数据,#1会发生,但#2不会,这可能不是你想要的(你永远不会看到最新的服务器数据).

希望这可以帮助!

总结

以上是内存溢出为你收集整理的android – 在Firebase中启用持久性时实际发生了什么?全部内容,希望文章能够帮你解决android – 在Firebase中启用持久性时实际发生了什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1103209.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存