我正在我的文档参考中注册快照侦听器。第一次,我得到的元数据isfromCache为true,而其他时候我得到的则为false。相反,因为没有文档在更改。我检查此值只是为了确保第一次读取后我的数据已从缓存中读取。
DocumentReference basicRef = usersRef.collection(DETAILS).document(BASIC_DETAILS);
ListenerRegistration basicListener = basicRef.addSnapshotListener(new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(@Nullable DocumentSnapshot snapshot,
@Nullable FirebaseFirestoreException e) {
if (e != null) {
return;
}
if (snapshot != null && snapshot.exists()) {
Log.d("debug", "Current data basic: " + snapshot.getMetadata().isFromCache());
BasicDetails basicDetails = snapshot.toObject(BasicDetails.class);
loadData(basicDetails);
} else {
Log.d("debug", "Current data: null");
}
}
});
答案 0 :(得分:1)
isFromCache
属性记录为:
true
(如果快照是从缓存的数据而不是保证的最新服务器数据创建的。)
因此,false
不一定表示已从服务器读取了文档,而是意味着已保证该文档与服务器是最新的。
要知道哪些文档已更改,可以遍历documentChanged集合,如上面的代码所示。
另请参阅: