Firebase Android addListenerForSingleValueEvent иногда не возвращает данные

Когда мое приложение запускается, я проверяю текущие данные пользователя в моей базе данных Firebase (я храню для него это uid).

Я прикрепляю addListenerForSingleValueEvent к рефлектору пользователя, чтобы читать его данные.

Моя проблема в том, что иногда это не возвращает никакой ценности, ни успеха, ни неудачи.

Только очистка данных приложения решает его, но, конечно, заставляет пользователя снова войти в систему.

Я прочитал несколько сообщений в SO, но не нашел никакого решения.

Вот мой фрагмент кода:

DatabaseReference newUser = FirebaseDatabase.getInstance().getReference("users/"+uid); newUser.addListenerForSingleValueEvent(new ValueEventListener() @Override public void onDataChange(DataSnapshot snapshot) {} @Override public void onCancelled(DatabaseError databaseError) {} }); 

Рекомендация, которую я видел для этого, – вызвать keepSynced(true) в объекте Query .

Я предполагаю, что user/:id не существует. Дважды проверьте вывод ошибки:

 DatabaseReference newUser = FirebaseDatabase.getInstance() .getReference("users") .child(uid) .addListenerForSingleValueEvent(new ValueEventListener() @Override public void onDataChange(DataSnapshot snapshot) { if (snapshot.exists()) { Log.i(TAG, snapshot.val()); } else { Log.e(TAG, "Not found: " + uid); } } @Override public void onCancelled(DatabaseError databaseError) { Log.e(TAG, databaseError.toString(); } }); 

У меня была такая же проблема в течение нескольких дней, и я, наконец, ее исправил.

Похоже, мой ключ Апи был изменен! И это мешает addListenerForSingleValueEvent() !
Перейдите в Firebase Console , откройте свой проект, щелкните значок настроек значок передач И перейдите к настройкам проекта . Там вы увидите Web API Key . Возьмите это и скопируйте его в свой файл google-services.json каталог вашего проекта. Вот фрагмент из этого файла:

  ... ], "api_key": [ { "current_key": "<COPY Web Api Key HERE>" } ], ... 

Вот и все. После замены значения «current_key» ключом из Firebase, он вернулся к работе (ранее у него был другой ключ, который, я думаю, я создал в Google Console, и он работал несколько месяцев. Всего несколько дней назад он переставал работать)