我一直在使用新的云端防火墙数据库编写应用程序。虽然启用了离线持久性,但离线时很多东西都不能顺利运行,这很有效。 例如,我执行以下操作:
ref.delete().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
//Do something
} else {
//Do another thing
}
}
});
但是,离线时永远不会调用onComplete
方法。一旦发生这种情况,我想关闭活动并显示一些Snachbar。但从未如此,活动仍然开放。我正在使用android studio模拟器。
由于
答案 0 :(得分:8)
写入数据库的操作被定义为在实际提交到后端后发出完成信号。因此,这是按预期工作的:离线时,他们不会完成信号。
请注意,即使您没有等待从删除中完成任务,Firestore客户端也会在内部保证您可以阅读自己的写入。
在大多数情况下,这意味着您不需要等待此任务完成。您有兴趣这样做是否有任何特殊原因?