Как реализовать повтор при неудачном соединении для Firestore на Android - PullRequest
0 голосов
/ 28 августа 2018

Предположим, что при получении данных сетевое соединение отключено, и я получил ошибку, не получив никаких данных:

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. Я создаю приложение в первый раз, и остается только внедрить кнопку повторной попытки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...