在Android上处理Firebase DatabaseReference updateChildren OnCompletionListener的java正确方法
我正在使用Firebase数据库,希望脱机持久性也能正常工作。我已经看到,在脱机模式下调用DatabaseReference.updateChildren
时,值侦听器回调会立即触发,而OnCompletionListener
仅在网络返回时才会触发。这是正确的理解吗?如果是这样,那么在OnCompletionListener成功或失败的情况下,客户机应该做什么
具体地-
如果OnCompletionListener失败,是否在本地回滚更改,并使用回滚值触发所有值侦听器回调
在什么情况下OnCompletionListener会返回失败?是否有需要重新审理的案件
在ValueChangeListener中,监听OnCompletionListener的成功而不是回调的典型用例是什么
# 1 楼答案
是的
当网络连接丢失(用户设备上没有网络连接)时,既不会触发
onComplete()
也不会触发onFailure()
。这种行为是有道理的,因为只有在Firebase服务器上提交(或拒绝)数据时,任务才会被视为已完成没有回滚,因为在更新数据时,数据首先写入数据库的本地版本,显然是在使用以下代码行启用持久性时:
当Firebase服务器由于Firebase安全规则引起的
insufficient permissions
而拒绝更新时这是听OnCompletionListener成功的典型用例