为什么Firebase身份验证模式使用
auth = FirebaseAuth.getInstance();
auth.<signin type>.addOnCompleteListener
在进行身份验证尝试之前,不是将onCompleteListener添加到auth对象?如果不使用,是否存在竞争条件:
auth.addOnCompleteListener(...)
auth.<signon attempt>
答案 0 :(得分:0)
当您启动登录流程时,它会返回一个任务。当auth流程完成时(成功或出错),该任务完成。它是一个类似承诺的API,这意味着您可以延迟添加完成侦听器,但仍然会调用它。
我更喜欢自己使用AuthStateListener
:
auth.addAuthStateListener(new FirebaseAuth.AuthStateListener() {
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
setCurrentUser(firebaseAuth.getCurrentUser());
}
});
onAuthStateChanged()
方法将在当前身份验证状态下立即调用,然后在身份验证状态更改时立即调用。这消除了我对种族状况的任何恐惧,并使我的代码非常“反应”#34;。
我认为我们内部称这些时变值,但我不确定它是否也是它们的更通用术语。