所以我断开了网络连接,测试了我的应用程序。当我向数据库中添加某些内容时,我会检查是否使用默认的OnSuccessListener成功添加了该内容。但是,即使我的应用程序处于飞行模式或没有Internet连接,也会调用OnSuccessListener,而OnFailureListener不会。
这很奇怪,不应该叫它。
代码:

database.child("blah").child(key).setValue(objects).addOnSuccessListener(new OnSuccessListener<Void>() {
        @Override
        public void onSuccess(@NonNull Void T) {
            //Do whatever
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            //display error message
        }
    });

但出于某种原因,OnSuccessListener仍在被调用。这令人难以置信地恼火。即使我添加OnCompleteListener而不是if(task.isSuccess())时,它也会执行相同的操作。

最佳答案

正如医生所说:
firebase应用程序即使在脱机时也保持响应,因为firebase
实时数据库sdk将数据保存到磁盘。一旦连接
重新建立后,客户端设备将接收它错过的任何更改,
正在将其与当前服务器状态同步。
因此,您的数据已成功添加到磁盘,一旦您联机,它将同步到云。

10-08 05:46