Официальная Документация Firebase гласит:
ChildAdded
EventHandler ChildAdded
Событие возбужденокогда дочерние узлы добавляются относительно этого местоположения.
Зарегистрируйте обработчик, чтобы наблюдать, когда дочерние узлы добавляются относительно этого объекта Query.Каждый раз, когда добавляются дочерние узлы, ваш обработчик будет вызываться с неизменным снимком данных.
ChildRemoved
EventHandler ChildRemoved
Событие, возникающее при удалении дочерних узлов относительно этого местоположения.
Зарегистрируйте обработчик, чтобы наблюдать, когда дочерние узлы удаляются относительно этого объекта Query.Каждый раз, когда удаляются дочерние узлы, ваш обработчик будет вызываться с неизменным снимком данных.
ChildChanged
EventHandler ChildChanged
Событие, возникающее при изменении дочерних узлов относительно этого местоположения.
Зарегистрируйте обработчик для наблюдения за изменениями дочерних узлов относительно этого объекта Query.Каждый раз, когда дочерние узлы меняются, ваш обработчик будет вызываться с неизменным снимком данных.
До сих пор я успешно использую ChildRemoved и ChildAdded, и они работают бесперебойно и без проблем.Я делаю.В частности, эти два слушателя являются независимыми, то есть: действия, которые вызывают возгорание одного из них, гарантированно не вызывают возгорание другого.Поэтому мне не нужно выполнять какую-либо синхронизацию или планирование для разрешения конфликтов.
Мой вопрос: независимы ли эти три типа слушателей друг от друга?
То есть:
- Для любого данного действия я гарантирую, что один и не более одного из трех слушателей сработают.
- ТолькоChildAdded срабатывает, когда слушатель впервые установлен.Два других типа слушателей этого не делают.
Замечание о документации: это устранит неоднозначность, если в документации для ChildChanged будет указано, что означает «childChanged»: включает ли она добавление / удаление /Перемещение / редактирование дочернего элемента, или оно фокусируется только на редактировании существующего дочернего элемента?