为什么使用Firebase身份验证方法调用patttern?

时间:2016-05-24 22:01:40

标签: android firebase-authentication

为什么Firebase身份验证模式使用

auth = FirebaseAuth.getInstance();
auth.<signin type>.addOnCompleteListener

在进行身份验证尝试之前,不是将onCompleteListener添加到auth对象?如果不使用,是否存在竞争条件:

auth.addOnCompleteListener(...)
auth.<signon attempt>

1 个答案:

答案 0 :(得分:0)

当您启动登录流程时,它会返回一个任务。当auth流程完成时(成功或出错),该任务完成。它是一个类似承诺的API,这意味着您可以延迟添加完成侦听器,但仍然会调用它。

我更喜欢自己使用AuthStateListener

auth.addAuthStateListener(new FirebaseAuth.AuthStateListener() {
    public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
        setCurrentUser(firebaseAuth.getCurrentUser());
    }
});

onAuthStateChanged()方法将在当前身份验证状态下立即调用,然后在身份验证状态更改时立即调用。这消除了我对种族状况的任何恐惧,并使我的代码非常“反应”#34;。

我认为我们内部称这些时变值,但我不确定它是否也是它们的更通用术语。