當特定字段的值爲true時,我想從firebase ref中刪除addValueEventListener偵聽器。removeEventListener無法刪除Firebase中的偵聽器
ValueEventListener valueListener=null;
private void removeListener(Firebase fb){
if(valueListener!=null){
**fb.removeEventListener(valueListener);**
}
}
String key="https://boiling-heat-3083.firebaseio.com/baseNodeAttempt/" + userId+"/"+nodeType+"/"+nodeId+"/data";
final Firebase fb = new Firebase(key);
valueListener=fb.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snap) {
final HashMap<String, Object> data=(HashMap<String, Object>) snap.getValue();
if(data.get("attemptFinish_"+nodeId)!=null){
boolean title = (boolean) snap.child("attemptFinish_"+nodeId).getValue();
if(title){
removeListener(fb);
}
}
}
@Override
public void onCancelled() {
// TODO Auto-generated method stub
}
});
但是addValueEventListener沒有被移除,它被稱爲該firebase參考。因此,如果需要,請告訴我如何從任何firebase ref中移除偵聽器。
你'valueListener'總是'null' – talex
您可以在回調中使用'如果(標題){fb.removeEventListener(本)刪除監聽; }'。不相關:這段代碼的大多數讀者會認爲'title'是一個字符串。您可能希望使用一種更直觀的變量名稱來解釋爲布爾值,例如, 'isFinished'。 –
當偵聽器被添加時,valueListener有一個引用@talex – Keshav