我知道文档说"//在Java中,必须明确删除每个侦听器." 但有一个问题.
我部署我的应用程序 - 添加一个监听器(保存指针).但是,当我重新部署我的应用程序时,监听器仍然存在,但我无法删除它,因为我没有指针.:(
那么如何删除所有听众呢?(没有服务器重启)
第一个firebase调用的一些主要代码:
refFB.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot snapshot, String previousChildName) {
FirebaseReq fbReq = snapshot.getValue(FirebaseReq.class);
service(fbReq);
}
...
});
Run Code Online (Sandbox Code Playgroud)
对于维护和可读性,对我来说更清楚:
Run service(fbReq) in new thread.
public void service(FirebaseReq firebaseReq) {
value = dao(firebaseReq);
/*some other code which use value*/
}
public String dao(FirebaseReq firebaseReq) {
String result = null;
//the second firebase call
childRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
result = snapshot.getName();
}
...
});
while (result== null){
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
或者更好地避免线程和等待循环,但具有不可读代码:
public void service(FirebaseReq …Run Code Online (Sandbox Code Playgroud)