我有一个addValueEventListener
,可以监听Firebase实时数据库中的任何值更改。在线模式下,一切正常。
但是在离线模式下,设备处于脱机状态,我的Web服务器在Firebase实时数据库上完成了多次交易,其价值与我从Android安装的监听器相同。设备上线后,它只会监听最后一笔交易并跳过其间完成的其他交易。
PFB参考link。到目前为止我做过的PFB代码:
FirebaseDatabase.getInstance().setPersistenceEnabled(false);
FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference myRef = firebaseDatabase.getReference("mykey");
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
HashMap<String, Object> key_Value = (HashMap<String, Object>) dataSnapshot.getValue();
for (String key : key_Value.keySet()) {
System.out.println("firebase key is "+key);
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
Log.w("feroz ", "Failed to read value.", error.toException());
}
});
}
答案 0 :(得分:0)
Firebase实时数据库存储从查询中返回的信息,以便在断开连接时使用。对于在断开连接时开发的问题,Firebase实时数据库会继续处理已堆叠的信息。如果请求信息没有堆叠,Firebase实时数据库会从附近的保留区加载信息。当我们在线返回时,我们的信息将堆叠并反映查询。
例如,我们的应用程序中有一些代码,我们对Firebase实时数据库中的最后四项内容进行了分析
DatabaseReference scoresRef = FirebaseDatabase.getInstance().getReference("scores");
scoresRef.orderByValue().limitToLast(4).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot snapshot, String previousChild) {
System.out.println("The " + snapshot.getKey() + " dinosaur's score is " + snapshot.getValue());
}
});