2016-07-29 158 views
1

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

#askFirebase 

回答

3

如果您将监听器与addValueEventListener()和数据在本地磁盘高速缓存可用,onDataChange()方法会立即触发从缓存中的数据。

然后,Firebase客户端将向服务器注册以更新数据。任何时候它收到更新的数据,它都会再次调用onDataChange()

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

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

相关问题