2016-04-13 2 views
1

Я работал с запросом базы данных firebase. Но это было немного запутанно, читая документы, когда они там пишут addChildEventListener() listener's onChildAdded() будет вызывать каждый раз, когда ребенок добавляется.В чем разница между методами addListenerForSingleValueEvent и addChildEventListener Firebase?

Мой сценарий заключается в том, что я хочу запросить всех детей. Должно ли это выполняться с помощью вышеуказанного метода или с addListenerForSingleValueEvent?

Как и они упоминают в документе, что слушатель должен отделяться как ref.removeEventListener(originalListener)

  1. что это значит?
  2. Будет ли он звонить снова и снова при добавлении новых данных в db?
+0

Вместо этого просить здесь уточнить документацию, я настоятельно рекомендую вам попробовать. Создайте фрагмент для каждого ('addChildEventListener()' и 'addListenerForSingleValueEvent()'), затем добавьте несколько элементов в базу данных и посмотрите, что произойдет. что хорошо просто перефразируйте документацию для вас. Если ваше поведение по-прежнему не имеет смысла, опубликуйте фрагмент кода и то, что вы ожидали от него. –

+0

Благодарим вас за ценный совет .. Я определенно буду использовать оба метода для сравнения в ближайшее время, на данный момент я использовал addListenerForSingleValueEvent(), который понимает чуть больше, чем addChildEventListener(). Еще раз спасибо. скоро обновит мой вопрос. :) –

ответ

2

Оба они одинаковы, это зависит от того, как вы собираетесь его использовать. Лично я думаю ChildEventListener более гибкий в использовании, потому что вы можете определить, что делать в отношении действия (например, когда ребенок добавлен, изменен или удален). основанный на documentations, единственная разница: ValueEventListener сделает «вещи», которые вы определили относительно произошедшего изменения (будь он добавлен, изменен или удален), поскольку он имеет только одного слушателя OnDataChange(). Между тем ChildEventListener имеет 4 прослушивателя, onChildAdded(), onChildChanged(), onChildRemoved() и onChildMoved(), чтобы вы могли определить, что делать в каждом слушателе/​​действии.

Что касается removeEventListener(), это необходимо, потому что firebase является реактивной, а firebase активно слушают то, что происходит на данном узле (ссылка на базу данных). Поэтому, когда вы удаляете слушателя, он не будет прослушивать данный узел, поэтому любые изменения, сделанные после removeEventListener(), не будут распознаваться firebase. И да, как ChildEventListener и ValueEventListener всегда будет слушать активно и делать определенные действия добавлены каждый раз новые данные (onDataChange() и onChildAdded().

CMIIW и простите мой английский. С уважением,

RM

+0

что такое CMIIW? прося только для знания .. –

Смежные вопросы