Firebase 未使用 'gdx-fireapp' 删除事件监听器

Firebase not removing eventlistener using 'gdx-fireapp'

我正在尝试使用 gdx-fireapp 库在 LibGdx 应用程序中实施 Firebase。 我可以成功读取、更改或删除任何数据,但是当我在获取我想要的数据后尝试删除事件侦听器时,它不会被删除。我应该调用 cancel(); 来实现这一点,但什么也没发生。我什至多次尝试调用 cancel();,但仍然无效。有人知道我该如何解决这个问题吗?

我是这样称呼它的

        GdxFIRDatabase.inst()
                .inReference("Rooms/")
                .onDataChange(Map.class)
                .then(new Consumer<Map>() {
                    @Override
                    public void accept(Map map) {
                        Gdx.app.log("test","onDataChangedCalled");
                    }
                });

这是我取消它的方法:

        GdxFIRDatabase.inst().inReference("Rooms/").onDataChange(Map.class).cancel();

在调用 cancel(); 后,它应该在值更改时停止记录“onDataChangedCalled” 但事实并非如此。

对于遇到相同问题的任何人,您必须将侦听器存储到一个变量中,然后使用该变量调用它并取消它。

我是这样做的:

    ListenerPromise<Map> Rooms;

        Rooms = GdxFIRDatabase.inst().inReference("Rooms/").onDataChange(Map.class);

        GdxFIRDatabase.promise()
                .then(Rooms)
                .then(new Consumer<Map>() {
                    @Override
                    public void accept(Map map) {
                        Gdx.app.log("test","onDataChangedCalled");
                    }
                });

要取消它,只需像这样调用 cancel();

Rooms.cancel();