是否可以僅檢索在值事件偵聽器建立之後添加/更改的子項?從我的經驗看來,它似乎能夠抓住每一個孩子。僅在ValueEventListener啓動後檢索已更改的數據
例如,在一個基於聊天應用程序,如果我想使用查詢的最後10條信息作爲初始化步驟
FirebaseDatabase database = FirebaseDatabase.getInstance();
Query queryRef = database.getReference(MESSAGES)
.limitToLast(messagesToLoad);
queryRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// Load then new chat message
ChatMessage message = dataSnapshot.getValue(ChatMessage.class);
if (message != null)
{
mMessageList.add(0, message);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
之後取,我要附加一個ValueEvenListener
偵聽到的變化。
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference ref = database.getReference(MESSAGES);
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
ChatMessage message = dataSnapshot.getValue(ChatMessage.class);
if (message != null) {
mMessageList.add(0, message);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
編輯:我已經轉換爲childEventListener
當增加新的消息,但我顯然無法做到這一點與單ValueEventListener
查詢。我也調整了它,所以他們現在使用相同的數據庫引用(childEventListener
僅在創建片段時調用),但這似乎沒有太大的改變。
這只是爲了避免無緣無故地獲取整個數據堆。
你最終解決了這個問題嗎?我有一個類似的問題,因爲你不知道該怎麼辦 –