每当退出特定活动时,我都必须从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/

10-10 13:24