removeEventListener ne pas enlever l'écouteur de firebase
Je veux supprimer addValueEventListener auditeur à partir d'une firebase réf lorsque la valeur est true.
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
}
});
Mais addValueEventListener n'est pas retirée, et elle est appelée pour que firebase réf . Merci donc de me suggérer comment faire pour supprimer l'auditeur de toute firebase ref si nécessaire.
Votre
Vous pouvez enlever l'écouteur de dans le rappel avec
valueListener a une référence lorsque l'écouteur est ajouté @talex
valueListener
est toujours null
Vous pouvez enlever l'écouteur de dans le rappel avec
if (title) { fb.removeEventListener(this); }
. Sans rapport: la plupart des lecteurs de ce code va supposer que title
est une Chaîne de caractères. Vous pouvez utiliser un nom de variable qui est un peu plus intuitif à interpréter comme une valeur booléenne, par exemple isFinished
.valueListener a une référence lorsque l'écouteur est ajouté @talex
OriginalL'auteur Keshav | 2015-06-22
Vous devez vous connecter pour publier un commentaire.
Vous pouvez enlever l'écouteur de dans le rappel avec:
Donc une complète fragment:
J'ai enlevé le
HashMap
, au lieu d'utiliser les méthodes de laDataSnapshot
pour accomplir la même. J'ai aussi renommé un peu de variables pour être plus clair/plus idiomatiques.Avez-vous exécuter dans un débogueur? Si oui, est -
isFinished ever
vrai"?Oui c'est vrai et l'enregistreur de données à l'intérieur si la déclaration ci-dessus réf.removeEventListener () est exécuté
que faire si j'ai d'appel réf.removeEventListener (); à la fin de onDataChange juste avant l' }... est-ce bien? Je l'ai essayé et il fonctionne sur mon projet. Est-il une raison pour laquelle vous utilisez isFinished?
OriginalL'auteur Frank van Puffelen
Assurez-vous d'ajouter et de supprimer l'auditeur vers le même nœud sur votre DatabaseReference. Par exemple:
Votre écouteur est ce cas vers path_2.
Si vous essayez de supprimer votre écouteur à l'aide de ce code
ça ne marchera pas parce que vous tentez de supprimer le port d'écoute de la mauvaise nœud. La manière correcte serait
OriginalL'auteur Andre Haueisen
J'espère que cela va vous aider... juste yo peut utiliser cette méthode, c'est de travailler pour moi...
Écrire à partir de la onCreate()
Écrire à partir de onDestroy()
Auditeur
}
OriginalL'auteur Mathan Chinna
OriginalL'auteur Coldfin Lab