在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中启用持久性时实际发生了什么?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)