是否有必要在Android Firebase的每个活动中添加AuthStateListener? 我在登录活动中添加了AuthStateListener。我想知道这就够了吗?
答案 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}},您将使用此侦听器来收听以下事件:
在你需要知道这些事情的活动中,你应该注册听众。但根据我的经验,您只需要在登录活动中注册它。