Firebase Стоит ли много раз подключать и отключать SnapshotListener, если в течение 30 минут не было никаких изменений?
Нет, слушатель будет не срабатывать, если есть нет изменений в вашей базе данных. Однако, если вы отключите прослушиватель и подключите его снова, будет стоить один прочитанный документ , даже если запрос не даст результатов. Согласно комментарию Фрэнка ван Пуффелена, вот причина, по которой он работает таким образом:
Сервер должен выполнить запрос от вашего имени, поэтому, если на сервере не читаются отдельные документы, он взимает плату за запрос (фактически чтение индекса), чтобы предотвратить постоянное отсоединение / повторное присоединение (которое использует ресурсы сервера).
И это действительно имеет смысл.
I думаю, что вы должны удалить его явно и заново инициализировать все в соответствии с do c.
Да, это правильно. Когда прослушиватель больше не нужен, просто отсоедините его.
Таким образом, я могу явно вызвать remove и повторно инициализировать прослушиватель снимка, чтобы получить изменения, но есть ли штраф за это?
Вам всегда будет выставлен счет за количество прочитанных документов. Например, если ваш запрос возвращает два документа, вам выставляют счет за два чтения документа. Если вы не получите результатов, вам будет выставлен счет только за одну операцию чтения.
Я знаю, что чтение кэшированных значений в течение 30 минут ничего не стоит, поэтому это означает, что ничего не будет стоить присоединить и отсоединить прослушиватель снимков?
Если документ не содержит изменений, и я присоединяю прослушиватель снимков снова и снова, скажем, 50 раз за 30 минут, это будет мне стоить?
Если вы отключите прослушиватель и подключите новый 50 раз, а в базе данных не будет изменений, это будет стоить вам 50 чтений документа.