【问题标题】:Is there a way to check if the ValueEventListener removed successfully?有没有办法检查 ValueEventListener 是否成功删除?
【发布时间】:2021-10-02 13:44:23
【问题描述】:

我正在开发一个 Android 应用程序,我想在其中检查 Firebase 数据库中的更改。但是,我只想监听数据库中的更改,直到进行 5 次更改。之后,我想关闭 valueEventListener。

valueEventListener = databaseReference.child(roomID).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            if(i == 5){
                Log.d(TAG,"REMOVING");
                databaseReference.removeEventListener(valueEventListener);
            }else{
                Log.d(TAG,"CALLED");
            }
            i++;
        }

因此,在此之后,我会转到 Firebase 并手动更改这些值。对于前五次更改,“CALLED”会在日志中打印 5 次,而对于第 6 次更改,则会打印“REMOVING”。所以我想它不会再打印了,因为进一步的改变。但即使在那之后,当我更改 firebase 中的值时,它仍然会在日志中打印“CALLED”。所以我很困惑,连接是关闭了,还是仍然打开并在监听变化?

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案1】:

    您正在从错误的引用中删除侦听器。要解决这个问题,请更改:

    databaseReference.removeEventListener(valueEventListener);
    

    收件人:

    databaseReference.child(roomID).removeEventListener(valueEventListener);
    //                 ^ ^ ^ ^ ^ ^
    

    即使您正确移除了监听器,“REMOVING”也会被打印一次,因为您在该日志语句之后分离了监听器。

    【讨论】:

    • 哦,抱歉这个愚蠢的问题,我不知道。非常感谢。它工作:)
    猜你喜欢
    • 2023-03-09
    • 2021-08-11
    • 2023-01-14
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多