java - Firebase 实时数据库 : Is there a way to avoid calling onDataChange when a value is removed?

标签 java android firebase firebase-realtime-database

我想知道是否有办法避免在删除值时调用onDataChange。 我想删除节点内的所有值,但无法完全删除该节点,因为我在 onDataChange 中设置了它。

public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
     if (!(dataSnapshot.haschild(aValue))
           //add aValue to the child

     if (dataSnapshot...

因此节点被删除后会立即重新创建。 此外,即使节点已被删除,onDataChange 内的语句也会被调用,从而导致应用程序崩溃。 目前,我设置 boolean 来检查节点是否被删除并且它是否有效,但我想知道是否有更好的方法来做到这一点。

最佳答案

I'm wondering if there is a way to avoid calling onDataChange when removing a value.

不,没有。根据官方文档关于ValueEventListener的onDataChange()方法:

This method will be called with a snapshot of the data at this location. It will also be called each time that data changes.

也就是说,即使是写入、更新甚至删除操作,都会触发该方法。因此,每次数据库发生更改时,onDataChange() 都会触发,不幸的是您无法避免这种情况。

关于java - Firebase 实时数据库 : Is there a way to avoid calling onDataChange when a value is removed?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52982026/

相关文章:

java - 是否可以打印静态方法?

java - Tomcat 有时无法通过 eclipse 在 ubuntu14.04 中启动

android - Chrome devTools 不再看到用于调试的 USB 设备

java - 是什么原因导致打字失败?

javascript - firebase 数据库中的图像上传在文件上传进度中给出 "NAN"

Firebase auth - 从网站中的应用程序登录用户

firebase - 从 firebase 恢复意外删除的数据(不是整个项目或数据库)

java - 使用 Spring REST 分页对 MongoDB 中的 ObjectId 进行日期范围查询

java - 对于中等复杂的 Java 桌面应用程序; JavaDB 连接应该是静态的吗?

java - future 日期的 Android 通知