== is equal to
=== is exactly equal to (value and type)
!= is not equal
Например:
var x = 1; //define and assigned and now x equal to 1
x = 3; //now x equal to 3
if( x == 4) {
//you won't see this alert
alert('Hello, x is 4 now');
} else {
//you will see this alert
alert('Hello, x hasn not been changed and it is still ' + x.toString());
}
Говоря о слушателях, да, вы должны удалить их соответственно жизненному циклу своей деятельности, и для этого вам нужно использовать следующую строку кода:
databaseReference.removeEventListener(valueEventListener);
Помните, если вы не делайте этого, вы в конечном итоге тратите свою батарею и пропускную способность. Итак:
onStart
, вы должны удалить его в onStop
. onResume
, вы нужно удалить его в onPause
. onCreate
, вы должны удалить его в onDestroy
. Но помните onDestroy
всегда вызывается not
, поэтому последний вариант не всегда является хорошим выбором.
Существует еще один подход, в котором нет необходимости удалять слушателя, и при использовании addListenerForSingleValueEvent :
Добавить слушателя для одного изменения данных в этом месте.
blockquote>
Чтобы удалить ValueEventListener, вы можете сделать следующее:
Удалить анонимность слушателя.
Измените код::
Ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
:
ValueEventListener listener= new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Ref.addValueEventListener(listener);
Теперь вы сможете удалить слушателя:
@Override
public void onDestroy() {
if (Ref != null && listener != null) {
Ref.removeEventListener(listener);
}
}
Вам нужно удалить его, чтобы слушатель не остался работающих в других жизненных циклах работы, таких как onDestroy()