Firebase:onChildAdded()方法即使脱机也被调用

Firebase:onChildAdded()方法即使脱机也被调用,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,在测试/调试时,我注意到当我脱机设置value()某些数据时,会在侦听器上触发onchildaded()。 如果在数据库中确实添加了子对象,是否可以将侦听器配置为只在子对象被触发时触发 谢谢:)中对您看到的行为进行了解释,并对违反安全规则的情况进行了其他解释。对Firebase实时数据库的更改会立即在本地反映,并排队等待在服务器上执行,在设备的internet连接允许的情况下完成 您的代码不应该关心设备是在线还是离线。不管怎样,它都应该读写数据库,并假设所有数据都将尽快同步。在Android/j

在测试/调试时,我注意到当我脱机设置value()某些数据时,会在侦听器上触发onchildaded()。 如果在数据库中确实添加了子对象,是否可以将侦听器配置为只在子对象被触发时触发


谢谢:)

中对您看到的行为进行了解释,并对违反安全规则的情况进行了其他解释。对Firebase实时数据库的更改会立即在本地反映,并排队等待在服务器上执行,在设备的internet连接允许的情况下完成


您的代码不应该关心设备是在线还是离线。不管怎样,它都应该读写数据库,并假设所有数据都将尽快同步。在Android/java中,你真的没有别的选择,除非你想通过读写。这样做的效率和方便性要低得多,而且没有考虑到当前经过身份验证的用户。

谢谢:)现在我对整个过程有了更好的了解。。。“原因是,这些即时回调可以帮助你的应用在网络连接不好的情况下感觉敏捷,还可以让你的应用在完全离线时可用。”1。我认为开发人员应该为不让应用程序感觉敏捷负责。这样会产生更多的数据(用户不喜欢,Firebase赚更多的钱)3。最重要的是:如果应用程序崩溃,将很难再次与数据库同步…我现在面临的问题就是因为这个(我不知道如何解决它)。。假设我没有任何互联网连接。。。一旦添加的儿童将在数据库中插入消息,应用程序/手机因不同原因崩溃,消息不会发送,但用户认为它已经发送,因为它在数据库中。。。。如果我只保存成功的消息(onSuccess),则应用程序无法在其他设备上同时工作…即使应用程序崩溃,只要启用持久性,对数据库的更改仍将同步。唯一的例外是您编写的显式事务,无法安全地重试。如果手机崩溃或关机怎么办?据我所知,启用持久性并没有帮助,例如,用户发送消息,用户认为消息是因为OnChildaded而发送的,即使它将被拒绝。。。如果您等待onSuccessful并拒绝OnChildeded中的所有用户消息,它将无法与其他设备正确同步。。。当然,我可以保存我发送的所有尚未成功的消息,但如果OnChildaded只打电话(请给我们自由选择),如果真的添加了或有关于孩子的更多信息,这将更加复杂。。。