永远不会调用ValueEventListeners

时间:2017-11-29 19:51:35

标签: android firebase-realtime-database

我正在尝试从Firebase数据库中获取特定值,如下所示:

databaseReference.child("update/version").addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        final Long version = (Long) dataSnapshot.getValue();

        if (version != null) firebaseVersion = version.intValue();

        needsUpdate = storedVersion != firebaseVersion;

        ...
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

永远不会调用侦听器内部的代码。我在调试模式下运行它,在第一行有一个断点,没有任何反应。以前这不是问题,但现在我没有使用valueEventListener。我尝试切换到.addValueEventListener并在数据库中更改它,但仍然得到相同的结果。

为什么不听我的听众?

2 个答案:

答案 0 :(得分:0)

是否会调用onCancelled回调?如果是,请记录DatabaseError。

此外,用户是否通过FirebaseAuth登录?这是从数据库中读取的要求。

答案 1 :(得分:0)

这两种方法之间存在很大差异。您不能将一种方法更改为另一种方法并期望相同的行为。

  
      
  1. Error: 500 - all shards failed继续侦听附加的查询或数据库引用。
  2.   
  3. addValueEventListener()立即执行addListenerForSingleValueEvent()方法,并在执行该方法后,一旦它停止侦听它所附加的参考位置。
  4.   

但请记住,每次数据更改时,都会使用特定位置的数据快照调用onDataChange()方法。如果没有更改,则不会触发onDataChange()方法。