处理 Firebase 数据库参考更新儿童 OnCompletionListener 的正确方法 on Android



我正在使用Firebase数据库,并希望离线持久性也应该有效。我已经看到,在离线模式下调用DatabaseReference.updateChildren时,值侦听器回调会立即触发,而OnCompletionListener仅在网络恢复时触发。这是正确的理解吗?如果是这样,客户端在 OnCompletionListener 中成功或失败时应该做什么。

具体说来-

  1. 如果 OnCompletionListener 失败,更改是否在本地回滚,并且所有值侦听器回调是否使用回滚的值触发?

  2. 在什么情况下,OnCompletionListener 会返回失败?是否有需要重审的案件?

  3. 在 ValueChangeListener 中侦听 OnCompletionListener 的成功而不是回调的典型用例是什么?

这是正确的理解吗?

是的,它是。

当网络连接丢失(用户设备上没有网络连接(时,既不会触发onComplete()也不会触发onFailure()。这种行为是有道理的,因为只有在 Firebase 服务器上提交(或拒绝(数据时,任务才会被视为已完成。

  1. 没有回滚,因为当数据更新时,它首先写入数据库的本地版本,显然是在使用以下代码行启用持久性时:

    FirebaseDatabase.getInstance().setPersistenceEnabled(true);
    
  2. 当 Firebase 服务器由于 Firebase 安全规则导致的insufficient permissions而拒绝更新时。

  3. 这是典型的用例,用于聆听OnCompletionListener的成功。

相关内容

最新更新