При подключении слушателя addValueEventListener()
и данные в кэше на локальном жестком диске, метод onDataChange()
будет немедленно стрелять с данными из кэша.
Клиент Firebase затем зарегистрируется на сервере для получения обновлений данных. Каждый раз, когда он получает обновленные данные, он снова вызывает onDataChange()
.
Итак, если у вас есть устаревшие данные в вашем локальном кеш-диске, вы можете получить два звонка до onDataChange()
в «быстрой» последовательности: один с устаревшими данными, а второй с последними данными. В настоящее время нет способа узнать, являются ли данные устаревшими или нет.
Единственный момент, когда это действительно создает сложную ситуацию, - это когда вы используете addListenerForSingleValueEvent()
. Поскольку вы получите только первое событие onDataChange()
, вы можете получить только устаревшие данные. Это одна из причин, по которой мы не рекомендуем смешивать постоянство диска с однонаправленными прослушивателями событий.