2016-09-23 37 views
1

我正在使用Firebase注册并记录具有不同提供商(谷歌,脸书和电子邮件)的用户。我一直在使用这个功能三个月,到目前为止它工作得很好。但是,此时,在安装应用程序后首次登录时,需要超过10秒。我追踪了这个行为,我发现这个听众正在造成延误。从Android设备中耗时过久的Firebase身份验证

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) { 
      // 
     } 
    }); 

有关为什么它需要太长时间的任何想法?有什么方法可以对此功能进行更深入的追踪以找出问题的确切来源?

回答

1

此特定侦听器(onSuccess)正在启动Firebase服务器的回调,这可能是导致延迟的原因。就好像把球扔到远处的一堵墙上,然后等着它反弹回来,然后才能抓到。

这将监听您的登录事件,甚至在成功登录后,它将等待Firebase响应以明确确认登录已成功。我个人觉得你不需要这个回调检查。因为您可以轻松地检查您的实际功能中的错误和成功登录。

编辑:你应该使用.onCompleteListener并检查。我希望这会保持代码逻辑有点类似,并仍然给出更好的结果