【问题标题】:Firebase database listener get values only when changeFirebase 数据库侦听器仅在更改时获取值
【发布时间】:2017-05-08 23:40:57
【问题描述】:

我有一个节点,我每三天刷新一次,其中包含我的 firebase 实时数据库中的一些键值对。我希望我的应用程序仅在我在此节点中进行更改时(大约每三天一次)才能获取新值。我目前使用此代码进行测试:

    mFirebaseDatabase.getReference().child("test").addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    Long tsLong = System.currentTimeMillis();
                    Log.d("thatsdatasnapshot", "thatsdatasnapshot = " + tsLong.toString());
Log.d("thatsdatasnapshot", "thatsdatasnapshot = " + dataSnapshot.toString());
                }

我的问题是,即使我没有更改节点中的任何内容(例如每次启动应用程序时),我在此侦听器中的日志也会经常打印。所以我猜我节点的所有值都是“经常”下载的,不仅仅是当我在我的数据库中进行更改时。我错了吗 ?仅在发生更改时如何下载我的节点的值?我认为这是 addValueEventListener() 应该做的,但当我看到我的日志打印得如此频繁时,我有疑问。

谢谢,

亚历克斯

【问题讨论】:

    标签: android firebase-realtime-database


    【解决方案1】:

    方法addValueEventListener 仅在您当前运行应用程序期间实时数据库中的值发生变化时触发,例如您的应用程序中的每个mRef.push()mRef.child("someChild").setValue() 方法调用。

    我在使用 firebase 实时数据库时遇到了几乎相同的问题,最后,我求助于创建 AsyncTask 来更新您在应用运行时必须更新的内容。

    您需要做的是创建一个AsyncTask 并对您的 Firebase 数据库进行 REST 调用,然后使用它进行更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多