所以我断开了网络连接,测试了我的应用程序。当我向数据库中添加某些内容时,我会检查是否使用默认的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将数据保存到磁盘。一旦连接
重新建立后,客户端设备将接收它错过的任何更改,
正在将其与当前服务器状态同步。
因此,您的数据已成功添加到磁盘,一旦您联机,它将同步到云。