Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android上处理Firebase DatabaseReference updateChildren OnCompletionListener的正确方法_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

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

Java Android上处理Firebase DatabaseReference updateChildren OnCompletionListener的正确方法,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我正在使用Firebase数据库,希望脱机持久性也能正常工作。我已经看到,在脱机模式下调用DatabaseReference.updateChildren时,值侦听器回调会立即触发,而OnCompletionListener仅在网络恢复时触发。这是正确的理解吗?如果是这样,那么在OnCompletionListener成功或失败的情况下,客户机应该做什么 具体地- 如果OnCompletionListener失败,是否在本地回滚更改,并使用回滚值触发所有值侦听器回调 在什么情况下OnComple

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

具体地-

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

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

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

  • 这是正确的理解吗

    是的

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

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

    FirebaseDatabase.getInstance().setPersistenceEnabled(true);
    
  • 当Firebase服务器由于Firebase安全规则导致的权限不足而拒绝更新时

  • 这是听OnCompletionListener成功的典型用例

  • 这是正确的理解吗

    是的

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

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

    FirebaseDatabase.getInstance().setPersistenceEnabled(true);
    
  • 当Firebase服务器由于Firebase安全规则导致的权限不足而拒绝更新时

  • 这是听OnCompletionListener成功的典型用例


  • 1.但是本地不会有任何规则或权限检查(当没有网络时),其他侦听器将看到更新的值,该值稍后将被服务器拒绝。所以本地提交需要回滚,还是我遗漏了什么?3.那么,这仅仅是为了处理失败?成功的状态可能已经对其他侦听器可见。1。只有当您脱机、联机更改安全规则,然后仅返回时,才会发生这种情况。是,在这种情况下,Firebase服务器将拒绝更新操作。权限不足的所有操作将不会执行。3.是的,一切都好吗?我能帮你提供其他信息吗?只是等着看其他人是否有什么要补充的。我会在一两天内接受答案:)好的,没关系。干杯1.但是本地不会有任何规则或权限检查(当没有网络时),其他侦听器将看到更新的值,该值稍后将被服务器拒绝。所以本地提交需要回滚,还是我遗漏了什么?3.那么,这仅仅是为了处理失败?成功的状态可能已经对其他侦听器可见。1。只有当您脱机、联机更改安全规则,然后仅返回时,才会发生这种情况。是,在这种情况下,Firebase服务器将拒绝更新操作。权限不足的所有操作将不会执行。3.是的,一切都好吗?我能帮你提供其他信息吗?只是等着看其他人是否有什么要补充的。我会在一两天内接受答案:)好的,没关系。干杯