В настоящее время я использую Firebase Firestore для проекта Android, но у меня возникают проблемы с получением данных, когда телефон находится в режиме полета. Вот мой код:
public void loadThings() {
FirebaseFirestore db = FirebaseFirestore.getInstance();
db.collection("medidas").whereEqualTo("id_user", mAuth.getCurrentUser().getUid()).get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
QuerySnapshot snapshot = task.getResult();
int tam = snapshot.getDocuments().size();
data = new String[tam];
StringBuilder temp;
DocumentSnapshot doc;
for (int i = 0; i < tam; i++) {
temp = new StringBuilder();
doc = snapshot.getDocuments().get(i);
temp.append("Date: ").append(doc.get("fecha")).append(";");
temp.append("Min: ").append(doc.get("min")).append(";");
temp.append("Max: ").append(doc.get("max")).append(";");
temp.append("Avg: ").append(doc.get("avg")).append(";");
data[i] = temp.toString();
}
if(tam==0)
{
noMeasures();
}
}
else
{
data=null;
}
mLoadingIndicator.setVisibility(View.INVISIBLE);
mMeasuresAdapter.setMeasuresData(data);
if (null == data) {
showErrorMessage();
} else {
showMeasuresDataView();
}
}
});
}
Особая проблема заключается в том, что иногда требуется много времени, чтобы показать данные (более 10 секунд), в то время как некоторые другие показывают данные сразу. Поскольку телефон находится в режиме полета, очевидно, что данные, которые я получаю, поступают из кеша. Однако я не понимаю, почему это иногда занимает так много времени. Есть ли какой-то способ явно указать firestore, чтобы он доставлял данные из кэша, вместо того, чтобы пытаться получить их с сервера? Заранее спасибо