我在代码的一部分中有一个Firebase实时数据库监听器,它是:
DatabaseReference refState= FirebaseDatabase.getInstance().getReference("/Rooms/"+roomName+"/gameState");
refState.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String gameState = dataSnapshot.getValue(String.class);
if (gameState.equals("choose_letter")) {
System.out.println("Starting game");
startGame();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("Error");
}
});
其中startGame()函数为:
private void startGame(){
Intent i = new Intent(Salon.this, Game.class);
i.putExtra("username",username);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(i);
finish();
}
代码工作并执行我想要的操作:当datdabased中的“gamestate”值更改为“choose_letter”时,它从当前活动“salon”开始一个名为“game”的新活动,并完成所有底层活动(包括salon)。在游戏过程中,“gamestate”会改变几次,但是当设置为:“choose_letter”时,活动会重新打开,在控制台中我可以读到“开始游戏”。因此,总而言之,不知何故,即使关闭了活动“沙龙”,该活动中声明的数据库侦听器仍在工作。我想知道,这怎么可能,我该如何修复它?
发生这种情况是因为数据库引用持有对其值事件侦听器的强引用。因此,即使您的活动被销毁,如果您不从refstate
对象中删除它,您仍然能够通过值事件侦听器接收消息。
在iOS中,当视图控制器消失时删除监听器是一个很好的做法。那么在Android世界也是这样吗?是否应该删除活动的中的所有侦听器
监听器提供对JMeter在JMeter运行时收集有关测试用例的信息的访问。 听众收集的结果或信息可以以下列形式显示: tree tables graphs 日志文件 当指定一个侦听器时,所有侦听器都将相同的原始数据写入输出文件。 默认配置 要保存的默认项目可以通过以下两种方式之一定义 - 在jmeter.properties (或user.properties)文件中。 此文件存在于JMeter的
我有两个屏幕..首先是闪屏,在这里我借助firebase.auth()检查用户是否已经存在。onAuthStateChanged侦听器。如果用户为空,它将转到另一个firebase.auth()的登录屏幕。onAuthStateChanged侦听器用于在电话验证后获取用户,如果用户之前未注册,则将用户移至UserDetails屏幕以获取更多用户信息,或者移至主屏幕..同样的检查也在闪屏上进行,以确
我遇到了这个githttps://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md,它展示了开发人员如何通过添加“被动监听器”来提高滚动性能。我第一次看到它是在我的chrome向我显示警告时(确切的警告是“由于主线程繁忙,‘触摸启动’输入事件的处理延迟了126毫秒”。考虑将事件处理程序标记为“被动”,以使页面更具响应性。
我是一个巨大的promise链,但我意识到其中一个函数返回一个对象,该对象具有侦听器,并对回调作出反应,如 我想知道是否有一种方法可以使用promise来实现这一点,并将其转化为可选项。除了重写我的整个promise链来使用回调,没有其他选择吗?
我试图通过stackoverflow搜索这个问题,但找不到合理的答案。我对@Kafkalistener注释的方法的签名很好奇,我们需要遵循什么约定吗?。如果我们想通过方法注入传入spring管理的bean呢?我试图通过方法注入将服务类传递给kafka侦听器- 我得到以下例外- 如果我使相关服务类自动生成,工作正常。