2016-07-29 176 views
1

我已經將setPersistenceEnabled設置爲true,我使用的是addValueEventListener,並且使用了onDataChange方法。 每次調用方法時,我的應用程序是否總是從服務器下載數據,或者如果可用,我的應用程序是否會從緩存中獲取數據? 當我離線時,我確信數據來自緩存。Firebase實時數據庫addValueEventListener

#askFirebase 

回答

3

如果您將監聽器與addValueEventListener()和數據在本地磁盤高速緩存可用,onDataChange()方法會立即觸發從緩存中的數據。

然後,Firebase客戶端將向服務器註冊以更新數據。任何時候它收到更新的數據,它都會再次調用onDataChange()

因此,如果您的本地磁盤緩存中存在過時的數據,則可能會以「快速」連續的方式收到兩個對onDataChange()的調用:一個包含陳舊數據,另一個包含最新數據。目前無法查看數據是否過時。

只有當您使用addListenerForSingleValueEvent()時,纔會真正造成棘手的情況。由於您只會在那裏獲得第一個onDataChange()事件,因此您只能獲取陳舊的數據。這是我們建議不要將磁盤持久性與單值事件偵聽器混合的原因之一。

相關問題