У меня проблема с valueEvenListener на Firebase. Рассмотрите ситуацию:Обновление базы Firebase против setvalue
Firebase ref = new Firebase(Constant.BASEURL).child("myLists");
ref.addValueEventListener(myValueEventListener);
Затем я пытаюсь обновить одно из значений списка с помощью updateChildren().
HashMap<String, Object> newEditionTimeHM = new HasMap<String, Object>
newEditionTimeHM.put("editionTimeStamp", ServerValue.TIMESTAMP);
ref.child(pushKey).updateChildren(newEditionTimeHM);
Он обновляет, но когда мой слушатель ловит обновление, он выходит из строя отчетов «не удалось отскочить к типу» ошибка.
С моей второй попытки я создаю новый объект shoppinList с новыми значениями, которые я хочу, и нажмите его с помощью setValue().
newEditionTimeHM.put("editionTimeStamp", ServerValue.TIMESTAMP);
ShoppingList shoppingList = new ShoppingList("Owner unknown", newEditionTimeHM);
ref.child(pushKey).setValue(shoppingList);
Когда мои слушатели его поймают, никаких проблем не сообщается.
В чем разница? Почему мне нужно создать совершенно новый объект, чтобы удовлетворить слушателя? Не эффективнее ли использовать updateChildren()? Искал this page для ответа, но не нашел его.
Если он «не поддается отказу», то результирующие данные (onDataChange) в одном из случаев, вероятно, отличаются от других. Проверьте отладку, в чем разница и сделайте выводы. – Wukash
@Wukash Я проверил. Эти два метода должны делать то же самое. Доказательство этого заключается в том, что, когда я проверяю свой конечный результат в firebase, я получаю то же самое, используя первый метод или второй. Разница заключается в том, как реагирует слушатель. –
Да, я понимаю, что значения на сервере одинаковы в конечном результате. Я сказал, что вы должны проверить, в чем разница в методе слушателя, и действовать соответствующим образом. Я имею в виду, что мы не сможем изменить поведение библиотеки firebase, так что это ваш единственный вариант ... – Wukash