Я прочитал это в документации :
Чтобы использовать автономное сохранение, вам не нужно вносить какие-либо изменения в
код, который вы используете для доступа к данным Cloud Firestore. С оффлайн
постоянство включено, клиентская библиотека Cloud Firestore автоматически
управляет онлайн и оффлайн доступом к данным и синхронизирует локальные данные
когда устройство снова подключено к сети.
...
Для Android и iOS автономное сохранение включено по умолчанию. к
отключите сохранение, установите опцию PersistenceEnabled
на false
.
В Android я создаю ссылку на Firestore следующим образом:
final FirebaseFirestore db = FirebaseFirestore.getInstance();
Тогда я предполагаю, что постоянство включено по умолчанию.
Я попытаюсь объяснить этим изображением, что происходит:
A
B
- Вчера я тоже добавил этот документ. Устройство было подключено к сети после существования этого документа, но я не читал этот документ . Это было добавлено, но никогда не читалось.
- Сегодня с устройством в автономном режиме Я пытаюсь прочитать этот документ, но это невозможно. (Почему не было синхронизации во время работы устройства?)
C
Вчера у меня был доступ к коллекции 6
, документу 03000503
...
Постоянство не включено для всей коллекции ?
Когда я добавляю документ 03030501
, этот документ не синхронизируется с устройством, когда он включен? Если я не читаю документ один раз в режиме онлайн , не происходит синхронизация? В этом случае синхронизация не для всех документов в сбор 6 ?
Мне нужно, чтобы, если я добавлю один документ в коллекцию 6, устройство синхронизировало этот документ, когда он в сети, без необходимости вводить этот новый документ. Это возможно?
Вот код для чтения документов:
public void launchFirestore() {
final FirebaseFirestore db = FirebaseFirestore.getInstance();
String fechaDD = strFechaHoy.substring(6, 8);
String fechaMM = strFechaHoy.substring(4, 6);
String fechaYYYY = strFechaHoy.substring(0, 4);
DocumentReference calRef = db.collection(CALENDAR_PATH).document(fechaYYYY).collection(fechaMM).document(fechaDD);
calRef.addSnapshotListener(new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(@Nullable DocumentSnapshot calSnapshot,
@Nullable FirebaseFirestoreException e) {
DocumentReference dataRef=calSnapshot.getDocumentReference(VISPERAS_ID);
if (e != null || dataRef==null) {
launchVolley();
return;
}
if (calSnapshot != null && calSnapshot.exists()) {
dataRef.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot dataSnapshot) {
//Log.d(TAG,"---"+dataSnapshot.toString());
mBreviario = dataSnapshot.toObject(Breviario.class);
showData();
}
});
} else {
launchVolley();
}
}
});
}