2016-09-23 5 views
1

Firebaseを使用して、さまざまなプロバイダ(Google、Facebook、電子メール)のユーザを登録してログインしています。私は3ヶ月間この機能を使用していますが、今のところうまく機能しています。しかし、現時点では、アプリをインストールした後初めてログインすると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を使用してチェックする必要があります。私は、コードのロジックをやや似通った状態に保ち、さらに良い結果を残すことを願っています。

関連する問題