[英]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.