Да, и это очень раздражает. Это связано с регистрационным звонком. Мало того, onAuthStateChanged будет многократно вызываться во многих разных состояниях, не имея возможности узнать, в каком состоянии он находится.
Documentation говорит:
onAuthStateChanged (FirebaseAuth авт)
Этот метод вызывается, в потоке пользовательского интерфейса об изменениях в состоянии аутентификации:
Вот некоторые советы по обнаружению текущего состояния:
- Регистрационный звонок: пропустите первый звонок с флагом.
- Пользователь присоединился: пользователь от параметра is! = Null.
- Пользователь выйдет из системы: пользователь из параметра == null.
- Текущие изменения пользователя: пользователь из параметра is! = Нулевой и последний идентификатор пользователя: = идентификатор пользователя из параметра
- Обновление токена пользователя: пользователь из параметра is! = Null, а последний идентификатор пользователя - это идентификатор пользователя из параметра
Этот слушатель - это беспорядок и очень жуткий. Команда Firebase должна изучить ее.
где ваш код? –
Эта проблема существует и в моем коде. 'OnStart()' имеет только этот код, кроме вызова super: 'FirebaseAuth.getInstance(). AddAuthStateListener (this);'. Этот вызов больше не встречается, и я проверил, что 'onStart()' вызывается только один раз. Тем не менее метод 'onAuthStateChanged (...)' вызывается дважды (или три раза иногда). –
Вероятно, ошибка, используйте флаг тем временем, как в этом ответе: http://stackoverflow.com/a/37686371/3597165 – user3597165