Вы не единственный, кто борется с этим. У меня была похожая проблема. После переустановки (или обновления) приложения в BaseActivity я проверил, вошел ли пользователь в систему. И он .. FirebaseAuth.getInstance().getCurrentUser()
вернул ненулевое значение. Поэтому, когда я использовал uid
для получения данных из базы данных Firebase, я получил беспорядок - некоторые случайные предметы.
Также обратите внимание, что я мог воспроизводить его только на некоторых устройствах . Например, я получил ненулевое значение на Nexus 5x , но не на Oneplue 3t (8.0.0).
После некоторого расследования я обнаружил несколько интересных фактов.
Факт № 1 ( документы )
В некоторых случаях getCurrentUser
возвращает ненулевое значение
FirebaseUser, но базовый токен недействителен.
На самом деле, когда getCurrentUser() != null
, вы не можете быть уверены, что пользователь действительно вошел в систему. Я пришел к выводу, что я не могу полагаться на getCurrentUser
, и мне следует пересмотреть способ проверки, вошел ли пользователь в систему ( как опция ).
Факт № 2
Приложение Android иногда запоминает свои данные после переустановки приложения из-за
автоматическое резервное копирование. Подробнее смотрите в сообщении .
Решение
<application
android:allowBackup="false"
android:fullBackupContent="false"
...>
Я установил android:allowBackup
и android:fullBackupContent
в false. Поэтому, когда я переустанавливаю приложение (или обновляю его), текущим пользователем firebase является null
.