是否有必要在Android Firebase的每个活动中添加AuthStateListener?

时间:2018-02-14 18:42:31

标签: android firebase firebase-authentication

是否有必要在Android Firebase的每个活动中添加AuthStateListener? 我在登录活动中添加了AuthStateListener。我想知道这就够了吗?

2 个答案:

答案 0 :(得分:2)

我认为没必要。您需要在必须登录环境设置的活动中使用它,或者以这样的方式注销环境清理:

mAuthStateListener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull final FirebaseAuth firebaseAuth) {
                FirebaseUser user = firebaseAuth.getCurrentUser();

                if (null != user) {
                    onSignedInInitialize(user);
                } else {
                    onSignedOutCleanup();
                }
            }
        };

这通常由通过 FirebaseUI 或使用唯一的SDK API来管理登录过程的活动来完成。

请记住在signin init函数中执行用户reload(),以便管理从控制台删除用户的情况,应用程序因缓存而不知道:

private void onSignedInInitialize(FirebaseUser user) {
        user.reload();
        if (null != user) {
        [...]

您需要在所有其他活动中拥有一个监听器,您需要响应与用户登录,注销或更新相关的事件。

在所有其他活动中,只有用户不为空时才需要检查。

if (null != user) { 

用户是从FirebaseAuth实例中获取的用户

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

通常在您使用监听器的位置,您可以在onCreate活动方法中创建监听器,然后将其添加到onResume并将其移除onPause

    @Override
    protected void onResume() {
        super.onResume();
        if (null != mAuthStateListener) {
            mFirebaseAuth.addAuthStateListener(mAuthStateListener);
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        if (null != mAuthStateListener) {
            mFirebaseAuth.removeAuthStateListener(mAuthStateListener);
        }
    }

答案 1 :(得分:1)

这实际上取决于您想要监控的内容。根据{{​​3}},您将使用此侦听器来收听以下事件:

  • 听众注册后
  • 用户登录后
  • 当前用户退出时
  • 当前用户更改时

在你需要知道这些事情的活动中,你应该注册听众。但根据我的经验,您只需要在登录活动中注册它。