Подтвердить что ты не робот

Firebase не синхронизирует автономный кеш, если приложение убито

Я устанавливаю автономное сохранение

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

как описано в более раннем сообщении, но следующий прецедент не выполняется:

  • Включите подключение к Интернету на трубке
  • Попытка записи в БД
  • Убейте приложение из памяти с помощью многозадачного меню пользователей в ОС
  • Включите подключение к Интернету обратно.
  • Перезапустите приложение. В этот момент я ожидаю, что новая запись с шага 2 будет отправлена ​​в БД через восстановленную сетевую связь, но этого не произойдет. (Являются ли мои ожидания правильными?)

Пример кода:

static{
    FirebaseDatabase.getInstance().setPersistenceEnabled(true);
}

void updateValue(){
    DatabaseReference dbRef = FirebaseDatabase.getInstance().getReference("mydb");
    dbRef.keepSynced(true);
    dbRef.setValue("123");
}

Обратите внимание, что если я не убиваю приложение из памяти, кеширование работает:

  • Включите подключение к Интернету на трубке
  • Попытка записи в БД
  • Включите подключение к Интернету обратно.
  • Новая запись отправляется в БД после восстановления сетевого подключения.
4b9b3361

Ответ 1

В соответствии с firebase документация

Транзакции не сохраняются через перезагрузки приложений

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