Firestore офлайн писать события - PullRequest
0 голосов
/ 13 января 2020

Firestore call onComplete et c только события онлайн . Как узнать о статусе записи в автономном режиме .

 db.collection("col").document(id).set(obj)
                .addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if (task.isSuccessful()) {
                          //Ok finish activity <----
                            finish();
                        } else {
                            Toast toast = Toast.makeText(getApplicationContext(),
                                    "Error try again", Toast.LENGTH_SHORT);
                            toast.show();
                        }
                    }
                });

Приведенный выше код не работает в автономном режиме, и я могу писать несколько раз. OnComplete не будет вызываться, пока я не подключусь к inte rnet. Как я могу реализовать эту функцию (закрытие деятельности при успехе).

Ответы [ 2 ]

2 голосов
/ 13 января 2020

onComplete не будет вызываться, пока я не подключусь к inte rnet.

Это нормальное поведение. OnCompleteListener вызывается только тогда, когда данные были записаны или отклонены серверами Firebase.

Слушатель никогда не будет запускать локальные операции записи. Если локальная операция записи не удалась, клиент выдаст обычное исключение. Клиент Firestore предназначен для продолжения работы даже в автономном режиме. Поэтому запись некоторых данных в базу данных в автономном режиме никогда не приведет к ошибке.

Как мне реализовать эту функцию (закрытие при успешном завершении).

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

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

1 голос
/ 13 января 2020

Автономные записи считаются записанными немедленно. Статус завершения для этого не существует.

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

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