2015-11-04 6 views

ответ

2

Во-первых, некоторые пояснения в порядке. Обратите внимание, что sendMessage() нацеливается на один узел, а putDataItem() приводит к синхронизации данных по всей сети. Поэтому, чтобы уточнить вопрос, я бы предположил, что вы говорите о ситуации, когда мы смотрим на один узел, на который нацеливается sendMessage(), и в то же время на том же узле мы смотрим на изменения данных. Кроме того, я собираюсь предположить, что приход в этот узел измеряется при вызове onMessageReceived() и onDataChanged(). При этом, давайте посмотрим на ваш вопрос:

  1. putDataItem() поставки и SendMessage() поставки происходят на двух разных каналах, так что нет гарантированного заказа между ними.
  2. Для сообщений, отправленных через sendMessage(), заказ гарантированно сохраняется независимо от прямого соединения между двумя конечными узлами или некоторыми перелетами между ними.
  3. Для putDataItem() заказ сохраняется, но вы должны знать, что вы можете видеть меньше вызовов onDataChanged(), чем putDataItem() при обновлении одного и того же элемента; когда элемент добавляется, а затем обновляется, а затем обновляется снова и снова, некоторые средние обратные вызовы могут быть пропущены, но окончательный обратный вызов гарантированно отражает изменения в сети и для двух разных элементов данных, порядок сохраняется.

Надеюсь, это ответит на ваш вопрос.