android - Firebase 不使用“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();
推荐阅读
- python - Matplotlib - 带有数据出现次数的箱线图?
- javascript - 如何延长自由网络服务器应用程序的超时时间,使其等待超过 60 秒?
- android - lateinit 属性 mmap 尚未初始化
- java - 线程从不获取共享锁
- javascript - Datatables can't use sort by column or search in content
- r - 查找不同字符串的函数
- uwp - 更新已安装的侧载 uwp 应用程序
- c# - StackExchange Redis - WriteAllQueues 上的高 CPU 使用率
- depth-first-search - 如何按字母顺序进行深度优先搜索?
- python - sklearn中没有最小二乘的线性回归