Как удалить предыдущие значения ValueEventListeners в ссылку Firebase? [Дубликат]

JS Операторы сравнения

==      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());
}

0
задан Peter Haddad 19 February 2018 в 22:33
поделиться

2 ответа

Говоря о слушателях, да, вы должны удалить их соответственно жизненному циклу своей деятельности, и для этого вам нужно использовать следующую строку кода:

databaseReference.removeEventListener(valueEventListener);

Помните, если вы не делайте этого, вы в конечном итоге тратите свою батарею и пропускную способность. Итак:

  1. Если вы добавили слушателя в onStart, вы должны удалить его в onStop.
  2. Если вы добавили слушателя в onResume, вы нужно удалить его в onPause.
  3. Если вы добавили слушателя в onCreate, вы должны удалить его в onDestroy.

Но помните onDestroy всегда вызывается not, поэтому последний вариант не всегда является хорошим выбором.

Существует еще один подход, в котором нет необходимости удалять слушателя, и при использовании addListenerForSingleValueEvent :

Добавить слушателя для одного изменения данных в этом месте.

4
ответ дан JGuo 15 August 2018 в 20:27
поделиться

Чтобы удалить 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()

3
ответ дан Sreekanth Karumanaghat 15 August 2018 в 20:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: