Не получать новые данные после того, как для Firebase Persistence Enabled установлено значение true? - PullRequest
0 голосов
/ 03 мая 2018

После внесения FirebaseDatabase.getInstance().setPersistenceEnabled(true); При запросе на получение данных

Query  query = FirebaseDatabase.getInstance()
                      .getReference()
                      .child("notifications")
                      .child("entities")
                      .child(FirebaseAuth.getInstance().getCurrentUser().getUid().toString())
                      .orderByChild("seen")
                      .equalTo(0); 

Из дерева данных

он дает старые данные, которые находятся в кеше, вместо новых измененных данных в базе данных Firebase. Но когда я изменяю setPersistenceEnabled(true) на setPersistenceEnabled(false), тогда все в порядке Хотя я также хочу, чтобы данные Firebase сохранялись в кеше, а также изменить Когда внесение изменений в базу данных Firebase. Помогите сохранить постоянство данных Firebase вместе с изменение в реальном времени

1 Ответ

0 голосов
/ 03 мая 2018

Если вы используете:

setPersistenceEnabled(true);

Это означает, что вы сможете запрашивать базу данных, даже если вы не в сети. Это происходит потому, что Firebase создает локальную копию вашей базы данных, которая будет сохраняться после перезапуска вашего приложения / устройства. Каждое изменение, которое вносится, когда вы не в сети, будет обновляться на серверах Firebase, как только вы вернетесь в сеть. Чтобы быть более понятным, каждый клиент, который использует базу данных Firebase и использует setPersistenceEnabled(true), поддерживает свою собственную внутреннюю (локальную) версию базы данных. Когда данные обновляются, они сначала записываются в эту локальную версию базы данных.

Таким образом, благодаря включению постоянства любые данные, которые клиент базы данных Firebase Realtime будет синхронизировать в режиме онлайн, сохраняются на диске и доступны в автономном режиме, даже когда пользователь или операционная система перезапускает приложение. Это означает, что ваше приложение будет работать так же, как и в режиме онлайн, используя локальные данные, хранящиеся в кэше.

Но нет способа остановить получение данных из кеша, пока вы не подключены к серверу, так как вы не можете форсировать извлечение данных из кеша, пока вы подключены к серверу и, к сожалению, это поведение нельзя изменить.

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