添加snapshotListener时禁用第一个查询快照

Did*_*nel 2 android listener firebase google-cloud-firestore

Firestore 实时更新文档在这里

这是您可以在文档中找到的评论。

重要提示:第​​一个查询快照包含与查询匹配的所有现有文档的添加事件。这是因为您正在获得一组更改,这些更改使您的查询快照与查询的初始状态保持同步。例如,这允许您根据在第一个查询快照中收到的更改直接填充 UI,而无需添加用于处理初始状态的特殊逻辑。

我理解它是如何有用的,但在某些情况下它只会困扰我,我想知道是否有任何方法可以防止第一个查询快照触发侦听器。

RmK*_*RmK 5

AtomicBoolean isFirstListener = new AtomicBoolean(true);

commentListener = getLectureCommentsCollecReference(courseId, lectureId)
                .addSnapshotListener((queryDocumentSnapshots, e) -> {
                    if (isFirstListener.get()) {
                        isFirstListener.set(false);
                        //TODO Handle the entire list. 
                        return;
                    }
                    for (DocumentChange dc : queryDocumentSnapshots.getDocumentChanges()) {
                        switch (dc.getType()) {
                            case ADDED:
                                sendCommentAddedEvent(DataParser.parseComment(dc));
                            case MODIFIED:
                                sendCommentUpdatedEvent(DataParser.parseComment(dc));
                                break;
                        }
                    }
                });
Run Code Online (Sandbox Code Playgroud)

这是一种方法。我在评论功能中使用它来收听添加的新评论以及评论是否被修改。