繁体   English   中英

如何在 Android 上为 Firestore 实现连接失败重试

[英]How to implement retry on failed connection for Firestore on Android

假设在获取数据时,网络连接被关闭,我没有获取到任何数据就报错:

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 并尝试再次下载数据?

忘记提及我正在 ViewModel Factory 中初始化 Firestore 现在的问题是,如果我直接在 Activity 中初始化 Firestore,那么我可以对方法进行递归调用,如果我做对了,但是如果我从 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();
        }
    });
}

PS 我是第一次构建应用程序,唯一剩下的就是实现重试按钮。

关注这篇官方文章: https ://cloud.google.com/firestore/docs/best-practices

“Firestore SDK 和客户端库会自动重试失败的交易以处理暂时性错误。”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM