В некоторых случаях в Firebase отправляются несколько данных при попытке - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть узел, содержащий определенные данные в дереве в Firebase. Давайте назовем узел root в этом дереве как "x". Теперь, когда происходит определенное событие, часть дочерних элементов этого узла должна быть сохранена в другом месте, а остальные удалены. Итак, что я делаю, так это то, что у меня есть прослушиватель, подключенный к этому дочернему узлу, который проверяет значение узла и заботится об операции. Проверка, создание нового узла и удаление старого выполняется следующим образом:

if(status=="Complete"){
keyAppRef.child(querykey).removeValue()
     val pastkey = oTwoPastRef.push().key
     if(pastkey!=null){
       val hashMap : HashMap<String, String>
                = HashMap<String, String> ()
       hashMap["slot"] = timeslot
       hashMap["chamberTown"] = town
       keyPastRef.child(pastkey).setValue(hashMap)
  }

В приведенном выше описании keyAppRef является ссылкой на исходный узел, а keyPastRef является ссылкой на новый узел. Переменные status, timeslot и town были получены из datasnapshot в keyAppRef и сохранены через слушатель события value ранее. Теперь вместо одного создаваемого узла создается несколько узлов. Я сделал Log.d, чтобы узнать, где команда pu sh () вызывается следующим образом:

Log.d("MyMessage", "Line 4290 $querykey $pastkey")

Странно, когда эта команда журнала находится чуть ниже pu sh () .key командной строки, создан только один узел. Но когда эта команда Log.d снова удаляется, она возвращается к той же ошибке. Может кто-нибудь помочь с тем, что здесь происходит.

Это как-то связано с некоторой задержкой в ​​процессе кода в Log.d?

1 Ответ

0 голосов
/ 25 апреля 2020

Потратив много времени, я наконец смог найти ответ на свой вопрос. Поскольку в разное время ситуация вела себя по-разному, я мог понять, что это явный случай утечки памяти. После тщательного изучения документации Firebase я понял, что у прослушивателя события value возникли проблемы с утечкой памяти, поскольку я неправильно удалял прослушиватель, когда жизненный цикл приложения разрушался или останавливался. Теперь я удалил слушателей в соответствующих местах, и после этого эта проблема прекратилась.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...