我正在尝试从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
并在数据库中更改它,但仍然得到相同的结果。
为什么不听我的听众?
答案 0 :(得分:0)
是否会调用onCancelled回调?如果是,请记录DatabaseError。
此外,用户是否通过FirebaseAuth登录?这是从数据库中读取的要求。
答案 1 :(得分:0)
这两种方法之间存在很大差异。您不能将一种方法更改为另一种方法并期望相同的行为。
Error: 500 - all shards failed
继续侦听附加的查询或数据库引用。- 醇>
addValueEventListener()
立即执行addListenerForSingleValueEvent()
方法,并在执行该方法后,一旦它停止侦听它所附加的参考位置。
但请记住,每次数据更改时,都会使用特定位置的数据快照调用onDataChange()
方法。如果没有更改,则不会触发onDataChange()
方法。