Предположим, что при получении данных сетевое соединение отключено, и я получил ошибку, не получив никаких данных:
Failed to get document because the client is offline.
Метод, который я использовал:
mFirestoreDb.collection("somePath").document("anotherPath").get()
.addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
Log.d(TAG, "onSuccess: " + documentSnapshot.getData());
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d(TAG, "onFailure: " + e);
}
});
Как мне обработать ошибки такого типа, чтобы, когда пользователь нажимает кнопку повтора, он подключается к Firestore и пытается снова загрузить данные?
Забыл упомянуть, что я инициализирую Firestore в ViewModel Factory . Теперь проблема в том, что если я инициализирую Firestore непосредственно в Activity, то я могу сделать рекурсивный вызов метода, если я делаю это правильно, но если я получаю задачу из viewmodel, то я не могу сделать рекурсивный вызов, подобный этому :
В классе модели представления:
Task<DocumentSnapshot> task;
ViewModelConstructor(...) {
task = mFirestoreDb.collection("path")
.document("anotherPath").get();
}
public Task<DocumentSnapshot> getTask() {
return task;
}
В активном режиме:
private void someMethod() {
// ...
viewModel.getTask().addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d(TAG, "onFailure: " + e);
someMethod();
}
});
}
P.S. Я создаю приложение в первый раз, и остается только внедрить кнопку повторной попытки.