Пока устройство находится в автономном режиме, и если вы включили постоянную работу в автономном режиме (которая в Firestore включена по умолчанию), ваши слушатели будут получать события прослушивания при изменении локально кэшированных данных. При первом подключении прослушивателя Firestore подключится к сети, чтобы загрузить все результаты вашего запроса и предоставить вам объект QuerySnapshot
. Если вы подключите тот же прослушиватель во второй раз и используете автономное сохранение, прослушиватель будет немедленно запущен с результатами из кэша . После того, как вы получите кэшированный результат, Firestore проверит на сервере, нет ли каких-либо изменений в вашем результате запроса. Если да, вы получите еще один снимок с изменениями.
Обратите внимание, что если вы используете вызов get()
, Firestore все равно попытается сначала подключиться к сети, чтобы предоставить вам как можно более актуальные данные. Если вместо этого вы используете addSnapshotListener()
, Firestore немедленно позвонит вам с кэшированными данными, не дожидаясь сети. Вот почему у вас есть столько времени между тем, как вы возвращаетесь в онлайн, и фактической синхронизацией.
Вы также можете посмотреть мой ответ на эту запись .