首页 > 解决方案 > FirebaseAuth onAuthStateChanged 总是在应用启动时启动

问题描述

我想在我的应用中的用户状态发生变化时得到通知。我的意思是,当它刚登录时和刚注销时。我不想在刷新用户令牌或每次应用程序启动并且用户自动登录时收到通知。

我为此使用了预期的处理程序:

FirebaseAuth.getInstance().addAuthStateListener(new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                FirebaseUser user = firebaseAuth.getCurrentUser();
                if (user == null) {
                    _restUserDataAndUI();
                } else
                    _refreshUserDataAndUI();
            }
        });

问题是每次启动我的应用程序以及用户的令牌更改时它都会启动。

有没有办法避免这种情况?

标签: javaandroidfirebasefirebase-authentication

解决方案


FirebaseAuth 的addAuthStateListener()方法:

注册一个侦听器以更改用户身份验证状态。

侦听器在 UI 线程中回调以下事件:

  • 在监听器注册之后
  • 当用户登录时
  • 当前用户退出时
  • 当前用户更改时

更改此行为的唯一方法是使用removeAuthStateListener(AuthStateListener)取消注册侦听器。


推荐阅读