2016-09-23 40 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並檢查。我希望這會保持代碼邏輯有點類似,並仍然給出更好的結果