每当退出特定活动时,我都必须从2个集合中删除2个文档(必须失败)。
我已经在onStop()中编写了以下代码,但它导致未调用super.onStop的错误。
@Override
protected void onStop() {
db.collection("ABC").document("123").delete().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
db.collection("XYZ").document("123").delete().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
progressDialog.dismiss();
MyActivity.super.onStop();
finish();
}
});
}
});
}
最佳答案
但这会导致未调用super.onStop的错误。
发生这种情况是因为您要放置以下代码行:
MyActivity.super.onStop();
在第二个
onComplete()
方法内部,该方法具有异步行为。为了解决这个问题,您应该像下面的代码行那样从回调中删除该行:@Override
protected void onStop() {
MyActivity.super.onStop(); //Added outside
db.collection("ABC").document("123").delete().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
db.collection("XYZ").document("123").delete().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
progressDialog.dismiss();
finish();
}
});
}
});
}
可见,对
super.onStop()
的调用都在两个回调之外。关于java - 退出 Activity 时如何在Firestore中执行delete()操作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59280410/