首页 > 解决方案 > Android:如何 100% 地从 Firebase 实时数据库获取一次性新鲜数据?

问题描述

从这个线程:https ://groups.google.com/forum/#!msg/firebase-talk/ptTtEyBDKls/XbNKD_K8CQAJ

addListenerForSingleValueEvent 的行为是:如果我们有缓存数据:使用我们缓存的任何内容引发一个事件(这可能是陈旧的)。向服务器发送请求以获取最新数据。这意味着您可能会在事件回调中获得陈旧的数据。下次调用 addListenerForSingleValueEvent 时应该会获得更新的数据(因为我们会尝试更新缓存)。

我们知道这不是理想的行为,并且正在寻找改进它的方法。目前,使用 keepSynced() 是确保它尽可能新鲜的好方法。

2020年还是这样吗?我发现当应用程序进入后台或设备进入睡眠状态时,依赖监听器(至少是 ChildEventListener)并不可靠——因此我不能简单地依赖 keepSynced(true)。

在我自己使用 addListenerForSingleValueEvent 的测试中,它似乎始终如一地工作,但我需要代表我的用户确保这 100%。我发现这个线程描述了使用 Query 对象的解决方法:https ://stackoverflow.com/a/38129967/5147164

2020 年还需要这种解决方法吗?谢谢你。

标签: androidfirebasefirebase-realtime-database

解决方案


推荐阅读