Я начал работать с базой данных Firebase Firestore, чтобы использовать мое время блокировки. Я создал приложение, в котором у меня есть несколько основных данных в Firestore и некоторые данные транзакций. Теперь для основных данных, я в настоящее время выбираю вот так:
firestoreInstance.collection("makes-models")
.whereEqualTo("type", "2W")
.get()
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
makesListMutableLiveData.setValue(null);
Log.e(TAG, e.getMessage());
}
}).addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if(task.isSuccessful()) {
List<Make> makes = task.getResult().toObjects(Make.class);
makesListMutableLiveData.setValue(makes);
} else {
makesListMutableLiveData.setValue(null);
Log.e(TAG, task.getException().getMessage());
}
}
});
Теперь, что я хочу, я должен получать данные только с сервера, если есть какие-либо изменения, иначе данные должны быть получены из CACHE. только. Согласно документации, которую я прочитал, есть способы получить
- только из кэша
- только с сервера
- проверить сервер и, если не удается подключиться из-за проблема с сетью, выборка из локальной сети.
То, что я хочу, это:
Как-то узнать, есть ли обновление данных в бэкэнде, если да, получить с сервера или еще, получить с локального. Одна вещь, которая пришла мне в голову, это использовать проверку временной метки с сервера с момента последней выборки и работать соответственно, но это кажется слишком большой нагрузкой, и я предполагаю, что должен быть лучший способ.