Firebase实时数据库addValueEventListener

时间:2016-07-29 17:26:28

标签: android firebase firebase-realtime-database

我已将setPersistenceEnabled设置为true,并且我使用了一个addValueEventListener,并在其中使用了onDataChange方法。 每次调用该方法时,我的应用程序是否总是从服务器下载数据,或者如果可用,我的应用程序是否会从缓存中获取数据? 当我离线时,我确信数据来自缓存。

#askFirebase

1 个答案:

答案 0 :(得分:2)

当您使用addValueEventListener()附加侦听器且数据在本地磁盘缓存中可用时,onDataChange()方法将立即触发缓存中的数据。

然后,Firebase客户端将向服务器注册以获取数据更新。只要它收到更新的数据,它就会再次调用onDataChange()

因此,如果您的本地磁盘缓存中存在过时数据,则可能会在“快速”连续中接收两次onDataChange()调用:一个具有过时数据,另一个具有最新数据。目前无法查看数据是否陈旧。

当你真正创造一个棘手的情况时,唯一的一次是当你使用addListenerForSingleValueEvent()时。由于您只会在那里获得第一个onDataChange()事件,因此您可能只会获得过时的数据。这是我们建议不要将磁盘持久性与单值事件侦听器混合的原因之一。