[英]Listen For MetaData Changes in Firebase Firestore database
我正在使用Firestore數據庫創建聊天模塊。 以下是我的偵聽器代碼,用於偵聽新消息:
mDb.collection("Users_Collection").document(mAuth.getUid()).collection("Recipients")
.document(psychichObj.getUid()).collection("Messages").orderBy("time").limit(30)
.addSnapshotListener(MetadataChanges.INCLUDE, new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
if (e==null){
for (DocumentChange dc:queryDocumentSnapshots.getDocumentChanges()){
switch (dc.getType()){
case ADDED:
Log.d("chatevents", "onEvent:Added ");
messgaesDataClass msg = dc.getDocument().toObject(messgaesDataClass.class);
messages.add(msg);
chatAdapter.notifyDataSetChanged();
messagesRecycler.smoothScrollToPosition(messages.size());
break;
case REMOVED:
Log.d("chatevents", "onEvent:Removed ");
case MODIFIED:
Log.d("chatevents", "onEvent:Modiefied ");
}
}
}
}
});
當我發送一條消息時,我想知道如何監聽位於本地緩存中或其元數據處於掛起狀態且尚未發送到服務器的msg對象?
將MetadataChanges傳遞給查詢的addSnapshotListener(MetadataChanges metadataChanges,EventListener偵聽器)方法時:
指示僅純元數據的更改(即僅Query.getMetadata()更改)是否應觸發快照事件。
基本上,這意味着每次元數據更改時,都會觸發偵聽器。 因此,在進行掛起操作的情況下,將更改變量pending
的值。
我想知道如何監聽本地緩存中的味精對象
在這種情況下,您應該考慮使用SnapshotMetadata的isFromCache()方法:
Log.d(TAG, "isFromCache: " + documentSnapshot.getMetadata().isFromCache());
當我在線時,它會打印:
isFromCache: false
當我離線時,它會打印:
isFromCache: true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.