Firebase Firestore занимает много времени, чтобы восстановить соединение после потери соединения - PullRequest
0 голосов
/ 05 июля 2018

Я создаю приложение для Android с помощью Cloud Firestore. В частности, я использую живую подписку (Snapshot Listener). И заметил странное поведение.

Когда интернет-соединение потеряно, в конце концов, я не могу получить данные из Firestore (учитывая, что автономный кеш пуст). Когда соединение восстановлено, я все еще не получаю никаких данных в течение 30-50 секунд. И только после этого, довольно продолжительное время, Firestore снова отправляет данные.

Есть идеи, откуда возникает эта задержка и как с ней бороться? Это действительно раздражает.

1 Ответ

0 голосов
/ 05 июля 2018

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

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

Вы также можете посмотреть мой ответ на эту запись .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...