【发布时间】:2017-01-12 18:11:50
【问题描述】:
我有一个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());
}
});
}
【问题讨论】:
-
Firebase 不存储交易。连接数据库时,您将获得最后一个值。因此,您必须将每笔交易存储在另一个节点中。
-
感谢您的回复,但我如何附加存储在节点中的数据。在每次推送的情况下,它将生成新的消息 ID。我需要一个不断追加的数组列表
-
你能把你的数据库 json 添加到问题(它的相对部分)吗?
-
推送 ID 可以很好地存储数据列表。它们按时间戳排序。请参阅此处“附加到数据列表”标题下的文档。 firebase.google.com/docs/database/android/save-data
标签: android firebase firebase-realtime-database