2017-10-09 14 views
2

私はオンラインで答えを見つけようとしましたが、Firebaseの実装に固有のものは見つかりませんでした。OnCompleteとOnSuccessのどちらを使用するかはどのようにわかりますか?

多くの操作のためにOnCompleteListenerOnSuccessListenerの間で選択することができます。どのようにして選択することができますか?私は1つの特定の操作(例のようget操作)のために、Firebaseドキュメンテーション、例えばthis oneから見ることができるように

私はOnCompleteOnSuccessのマニュアルを読んで、しかししている、彼らは時々OnSuccessListenerを使用し、時には彼らはOnCompleteListenerを使用しています。

どんな状況でどれが優れているかをどのように知ることができますか? それは問題ですか?それが成功したかどうか私はすべての操作について知りたいと考えています。

答えて

4

名前が示すように、onSuccess()は、タスクが正常に完了すると起動します。

は、タスクが完了したときに失敗した場合でも起動します。

このメソッドでは、Task.isSuccessful()Task.getException()を呼び出すことができます。

onSuccess()には、isSuccessful()がtrueを返し、getException()がnullを返すことがわかります(そう多くの点を呼び出すことはありません)。 onComplete()isSuccessful()

falseとすることができ、あなたはおそらく、より詳細な情報を得ることがgetException()を使用して、障害に対処するための機会を持っています。

あなたが失敗したタスク処理するために必要がある場合は、次の2つの選択肢があります。

  1. 使用とOnCompleteListener、およびif(task.isSuccessful()) { ... } else {...} - これは近い一緒に、成功と失敗のコードを置き、であってもよいが(そして、あなたがしなければなりませんの!)これらのルーチンが状態を共有する場合に便利です。
  2. 個別に使用するOnSuccessListenerOnFailureListener - これにより、それぞれのハンドラが1つのことに特化している点で、少しまとまりのあるリスナーを書くことができます。もちろん、1つのクラスで両方のインタフェースを実装することができ、両方のインタフェースを同じ状態にする別の方法を提供します。
関連する問題