2017-10-09 1 views
2

온라인으로 답변을 찾으려고했지만 Firebase 구현에 대한 답변을 찾을 수 없습니다.OnComplete 또는 OnSuccess를 사용할지 여부를 어떻게 알 수 있습니까?

많은 작업에 대해 OnCompleteListenerOnSuccessListener 사이에서 선택할 수 있으며 Firebase 사이에 선택할 수있는 방법을 알고 싶습니다. 나는 하나 개의 특정 작업 (예처럼 get 작업)을 위해, 중포 기지 문서화, 예를 들어 this one에서 볼 수

내가 OnCompleteOnSuccess에 대한 문서를 읽을 수 있지만 한 그들은 때때로 OnSuccessListener를 사용하고 때때로 그들은 OnCompleteListener를 사용합니다.

모든 상황에서 어느 것이 더 나은지 어떻게 알 수 있습니까? 중요합니까? 그것이 모든 일에 대해 알고 싶다는 생각이 들었다.

답변

4

이름에서 알 수 있듯이 onSuccess()은 작업이 성공적으로 완료되면 실행됩니다.

onComplete()은 작업이 완료되면 실패하더라도 실패합니다.

이 메서드에서 Task.isSuccessful()Task.getException()을 호출 할 수 있습니다.

onSuccess()에서 isSuccessful()이 true를 반환하고 getException()이 null을 반환한다는 것을 확신 할 수 있습니다 (전화 할 점이 많지 않음). onComplete()isSuccessful()에서

false 수 있으며, 당신은 아마 자세한 내용을 얻을 getException()를 사용하여 장애를 처리 할 수있는 기회를 가질 수있다.

당신이 (! 당신이해야), 당신은 두 가지 선택이 실패한 작업을 처리해야하는 경우

:

  1. 사용 및 OnCompleteListenerif(task.isSuccessful()) { ... } else {...} -이 가까이 함께 성공과 실패 코드를 박았 될 수있다 이러한 루틴이 상태를 공유하는 경우에 유용합니다.
  2. OnSuccessListenerOnFailureListener을 별도로 사용하십시오. 이렇게하면 각 처리기가 한 가지를 전문적으로 다루기 때문에 조금 더 응집력이있는 청취자를 작성할 수 있습니다. 물론 하나의 클래스가 두 인터페이스를 모두 구현할 수 있으므로 두 가지 모두 동일한 상태를 볼 수있는 또 다른 방법을 제공합니다.
관련 문제