java - removeEventListener() 不是 Firebase Firestore 的一部分吗?

标签 java android firebase google-cloud-firestore listener

我在 onPause() 方法中收到错误消息:

无法解析方法“removeEventListener(com.google.firebase.database.ValueEventListener)”

我想我在尝试转换时可能犯了一些错误 this tutorial (应用程序显示消息的接收者是否已看到该消息)从 Firebase 实时数据库到 Firebase Firestore。

ValueEventListener 的声明发生在 onCreate() 方法之前

ValueEventListener seenListener;

seenMessage()方法

private void seenMessage(final String recipientId){
        final CollectionReference reference = FirebaseFirestore.getInstance().collection("chats");
        seenListener = (ValueEventListener) reference.addSnapshotListener(new EventListener<QuerySnapshot>() {
            @Override
            public void onEvent(@Nullable QuerySnapshot documentSnapshots, @Nullable FirebaseFirestoreException e) {
                if(documentSnapshots!=null){
                    for(QueryDocumentSnapshot queryDocumentSnapshots : documentSnapshots){
                        Chat chat = queryDocumentSnapshots.toObject(Chat.class);
                        if (chat.getReceiver().equals(userId) && chat.getSender().equals(recipientId)){
                            HashMap<String, Object> hashMap = new HashMap<>();
                            hashMap.put("isseen", true);
                            reference.add(hashMap);
                        }
                    }
                }
            }
        });
    }

onPause()方法

@Override
    protected void onPause() {
        super.onPause();
        FirebaseFirestore.getInstance().collection("chats").removeEventListener(seenListener);
    }

最佳答案

Is removeEventListener() is not a part of Firebase Firestore?

不,不是。以下代码行:

reference.addSnapshotListener(new EventListener<QuerySnapshot>() {/* ... */}

返回ListenerRegistration对象,并且在 Java 中没有任何方法可以将这种类型的对象转换为 ValueEventListener目的。 ValueEventListener 是 Firebase 实时数据库的一部分,而 Cloud Firestore 是完全不同的产品。

正如我在您的代码中看到的,您正在使用 Cloud Firestore。如果您想删除监听器,请参阅我在以下帖子中的回答:

关于java - removeEventListener() 不是 Firebase Firestore 的一部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59683065/

相关文章:

android - 如何设置android按钮阴影而不是设置文本阴影

android - (Google Maps API 注册问题)无法使用调试 key 指纹注册

java - Gradle 同步失败 : Plugin with id 'com.google.android.gms:play-services' not found

reactjs - 解析错误 : "parserOptions.project" has been set for @typescript-eslint/parser. 该文件与您的项目配置不匹配 : . eslintrc.js

java - 工具栏的标题应该根据 Activity 而变化吗?

java - 如何显示java arraylist的不同步性?

java - QueryDSL 排序不适用于 Spring Data

Java:如何将集合划分为等价类?

android - 如何在 AppWidget 中重置 RemoteView 的 ColorFilter

java - 如何将倒计时器添加到 Firebase 中?