快照侦听器isFromCache()返回false

时间:2020-02-20 13:52:31

标签: android firebase google-cloud-firestore

我正在我的文档参考中注册快照侦听器。第一次,我得到的元数据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");
                }
            }
        });

1 个答案:

答案 0 :(得分:1)

isFromCache属性记录为:

true(如果快照是从缓存的数据而不是保证的最新服务器数据创建的。)

因此,false不一定表示已从服务器读取了文档,而是意味着已保证该文档与服务器是最新的。

要知道哪些文档已更改,可以遍历documentChanged集合,如上面的代码所示。

另请参阅: