我已将Firebase数据库9.0.2用于我的应用。
在执行全新安装后的几分钟内,数据库查询工作正常。 但是,当我在几分钟后重新打开应用程序时," onDataChange "和" onCancelled "方法没有返回任何结果。 如果我重新安装应用程序或清除应用程序数据,查询将再次起作用。
我如何运行查询:
Query query = FirebaseDatabase.getInstance().getReference().child("listings").child(id);
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//do something
}
@Override
public void onCancelled(DatabaseError databaseError) {
//do something
}
});
这是我的数据库规则:
{
"rules": {
".read": true,
".write" : true
}
}
知道为什么会这样吗?
答案 0 :(得分:2)
您可能使用过addValueEventListener
,但在该值发生任何变化时会调用它。如果您想从数据库中读取数据,则需要使用addListenerForSingleValueEvent
。
mDatabase.child("users").child("childKey").addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "getUser:onCancelled", databaseError.toException());
}
});
请参阅this了解更多