2016-07-29 7 views
1

Я установил setPersistenceEnabled в true, и я использую addValueEventListener и внутри этого метода onDataChange. Будет ли мое приложение всегда загружать данные с сервера каждый раз при вызове метода или мое приложение будет получать данные из кеша, если они доступны? Когда я в сети, я уверен, что данные поступают из кеша.База данных реального времени Firebase addValueEventListener

#askFirebase 

ответ

3

При подключении слушателя addValueEventListener() и данные в кэше на локальном жестком диске, метод onDataChange() будет немедленно стрелять с данными из кэша.

Клиент Firebase затем зарегистрируется на сервере для получения обновлений данных. Каждый раз, когда он получает обновленные данные, он снова вызывает onDataChange().

Итак, если у вас есть устаревшие данные в вашем локальном кеш-диске, вы можете получить два звонка до onDataChange() в «быстрой» последовательности: один с устаревшими данными, а второй с последними данными. В настоящее время нет способа узнать, являются ли данные устаревшими или нет.

Единственный момент, когда это действительно создает сложную ситуацию, - это когда вы используете addListenerForSingleValueEvent(). Поскольку вы получите только первое событие onDataChange(), вы можете получить только устаревшие данные. Это одна из причин, по которой мы не рекомендуем смешивать постоянство диска с однонаправленными прослушивателями событий.