Это хорошая идея - вызвать перезагрузку Firebase () внутри OnAuthStateChanged? Сначала я бы вызвал reload () во время инициализации приложения, но это еще не гарантирует, что объект FirebaseUser загружен. Кажется, что простой способ сделать это - вызвать OnAuthStateChanged (), если пользователь не равен нулю. Лог c состоит в том, что возвращенный профиль пользователя будет соответствовать кэшированному, и никакие последующие вызовы OnAuthStateChanged не будут выполняться. Это работает, но я немного беспокоюсь о побеге l oop по причинам, которые могут быть не очевидны для меня.
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth)
{
final FirebaseUser user = mAuth.getCurrentUser();
//call reload here???
if (user != null)
{
user.reload().addOnFailureListener(new OnFailureListener()
{
@Override
public void onFailure(@NonNull Exception e)
{
if (e instanceof FirebaseAuthInvalidUserException)
{
Log.e(TAG, "INVALID USER EXCEPTION: " + e);
Disconnect();
SignOut();
}
}
});
}
}