Правильный способ обработки Firebase DatabaseReference updateChildren OnCompletionListener на Android - PullRequest
0 голосов
/ 11 мая 2018

Я использую базу данных Firebase и хочу, чтобы автономное сохранение также работало.Я видел, что при вызове DatabaseReference.updateChildren в автономном режиме обратные вызовы слушателя значения запускаются сразу, тогда как OnCompletionListener срабатывает только при возврате сети.Это правильное понимание?Если это так, что клиенты должны делать в случае успеха или сбоя в OnCompletionListener.

В частности -

  1. Если OnCompletionListener получает сбой, выполняется ли откат изменений?локально и все обратные вызовы слушателя-значения запускаются со значением отката?

  2. В каких случаях OnCompletionListener может возвращать ошибку?Есть ли случай, который необходимо повторить?

  3. Какой типичный вариант использования для прослушивания успеха OnCompletionListener вместо обратного вызова в ValueChangeListener?

1 Ответ

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

Это правильное понимание?

Да, это так.

Когда происходит потеря подключения к сети (нет сетевого подключения на пользовательском устройстве)ни onComplete(), ни onFailure() не запускаются.Такое поведение имеет смысл, поскольку задача считается выполненной только тогда, когда данные были зафиксированы (или отклонены) на сервере Firebase.

  1. Откат не выполняется, поскольку при обновлении данныхсначала он записывается в локальную версию базы данных, очевидно, когда постоянство включено с использованием следующей строки кода:

    FirebaseDatabase.getInstance().setPersistenceEnabled(true);
    
  2. Когда серверы Firebase отклоняют обновление из-за insufficient permissions вызвано правилами безопасности Firebase.

  3. Это типичный вариант использования для прослушивания успеха OnCompletionListener.

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