有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Android上处理Firebase DatabaseReference updateChildren OnCompletionListener的java正确方法

我正在使用Firebase数据库,希望脱机持久性也能正常工作。我已经看到,在脱机模式下调用DatabaseReference.updateChildren时,值侦听器回调会立即触发,而OnCompletionListener仅在网络返回时才会触发。这是正确的理解吗?如果是这样,那么在OnCompletionListener成功或失败的情况下,客户机应该做什么

具体地-

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

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

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


共 (1) 个答案

  1. # 1 楼答案

    Is that the correct understanding?

    是的

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

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

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

    3. 这是听OnCompletionListener成功的典型用例