为了账号安全,请及时绑定邮箱和手机立即绑定

当你在Firebase上使用.setPersistenceEnabled(true)时

当你在Firebase上使用.setPersistenceEnabled(true)时

慕雪6442864 2022-08-03 16:09:02
我怀疑当我使用时是否真的有必要调用.addOnCompleteListenersetPersistence(true)当我使用时,如果我的互联网离线,屏幕会继续加载,因为永远不会结束 - 等待连接。因此,我无法离线添加任何内容,因为加载屏幕正在等待连接(打破了持久性的概念)。addOnCompleteListeneraddOnCompleteListener下面的示例显示了我在说什么:getDatabaseReference()        .child("Example")        .child(userID)        .push()        .setValue(dataExample)        .addOnCompleteListener(new OnCompleteListener<Void>() {    @Override    public void onComplete(@NonNull Task<Void> task) {        if (task.isSuccessful()){            //interface call with success response            interface.onSuccess();        }else {            //interface call with failure response            interface.onFailure(task.getException().getMessage());        }    }});因此,正如我所说,如果我的互联网离线,我无法完成操作,加载屏幕将永远保持加载状态(等待完成列表)。我发现,如果没有,我可以在离线时添加和删除值,因为它们在缓存中,所以当我有互联网时,应用程序会在线将更新发送到数据库 - 这太棒了。addOnCompleteListener下面的例子显示了我的建议: getDatabaseReference()        .child("Example")        .child(userID)        .push()        .setValue(dataExample); //interface call with successful response without handling error (because it won't happen) interface.onSuccess();所以,我的问题是,这样做是对的吗?这是一个好习惯?没有 ,并保持能够离线使用我的应用程序,仅在能够发送更新时?addOnCompleteListener
查看完整描述

1 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

您看到的是预期的行为。对实时数据库的写入在到达服务器并对其他客户端可见之前不会被视为“完整”。在 SDK 设法同步本地缓存的写入之前,不会将其视为已完成。如果您不需要知道服务器何时最终接收到写入,或者它是否成功,则无需向它生成的 Task 注册侦听器。


查看完整回答
反对 回复 2022-08-03
  • 1 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信