我已經將setPersistenceEnabled設置爲true,我使用的是addValueEventListener,並且使用了onDataChange方法。 每次調用方法時,我的應用程序是否總是從服務器下載數據,或者如果可用,我的應用程序是否會從緩存中獲取數據? 當我離線時,我確信數據來自緩存。Firebase實時數據庫addValueEventListener
#askFirebase
我已經將setPersistenceEnabled設置爲true,我使用的是addValueEventListener,並且使用了onDataChange方法。 每次調用方法時,我的應用程序是否總是從服務器下載數據,或者如果可用,我的應用程序是否會從緩存中獲取數據? 當我離線時,我確信數據來自緩存。Firebase實時數據庫addValueEventListener
#askFirebase
如果您將監聽器與addValueEventListener()
和數據在本地磁盤高速緩存可用,onDataChange()
方法會立即觸發從緩存中的數據。
然後,Firebase客戶端將向服務器註冊以更新數據。任何時候它收到更新的數據,它都會再次調用onDataChange()
。
因此,如果您的本地磁盤緩存中存在過時的數據,則可能會以「快速」連續的方式收到兩個對onDataChange()
的調用:一個包含陳舊數據,另一個包含最新數據。目前無法查看數據是否過時。
只有當您使用addListenerForSingleValueEvent()
時,纔會真正造成棘手的情況。由於您只會在那裏獲得第一個onDataChange()
事件,因此您只能獲取陳舊的數據。這是我們建議不要將磁盤持久性與單值事件偵聽器混合的原因之一。