我正在使用Firebase注册并使用不同的提供商(谷歌,脸书和电子邮件)登录用户。我已经使用这个功能三个月,到目前为止它工作正常。但是,此时,在安装应用程序后首次登录时,需要10秒以上。我已经跟踪了这个行为,并且发现这个监听器导致延迟。
private FirebaseAuth firebaseAuth;
...
firebaseAuth.signInWithCredential(credential).addOnSuccessListener(new OnSuccessListener<AuthResult>() {
@Override
public void onSuccess(AuthResult authResult) {
// This function is called after more than 10 seconds
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
//
}
});
关于为什么需要太长时间的任何想法?有没有什么方法可以更深入地了解这个函数来找到问题的确切来源?
答案 0 :(得分:1)
此特定侦听器(onSuccess)正在启动Firebase服务器的回调,这可能是导致该延迟的原因。就像把球扔到远处的墙上然后等待它反弹才能赶上。
这将听取您的登录事件,即使成功登录,它也会等待firebase响应,以明确确认登录成功。我个人觉得你不需要这个回调检查。因为您可以轻松检查实际功能中的错误和成功登录。
编辑:你应该使用.onCompleteListener并检查。我希望这将使代码逻辑保持一定的相似性并仍能提供更好的结果