2017-10-09 81 views
2

我試着在網上找到一個答案,但我找不到一個針對Firebase實現的問題。如何知道是使用OnComplete還是OnSuccess?

我可以在OnCompleteListenerOnSuccessListener之間進行選擇,以進行Firebase的大量操作,我想知道如何在它們之間進行選擇?

我已閱讀OnCompleteOnSuccess文檔,但是我可以從火力地堡文檔,this one例如參見,一個特定的操作(在本例等get操作)時,它們有時使用OnSuccessListener和有時它們使用OnCompleteListener

我怎麼知道哪一個在每種情況下都更好? 重要嗎?考慮到我想知道每個操作是否成功。

回答

4

顧名思義,onSuccess()將在任務成功完成時觸發。

onComplete()將在任務完成時觸發,即使失敗。

在該方法中,您可以撥打Task.isSuccessful()Task.getException()

onSuccess()你可以肯定isSuccessful()將返回true,並且getException()將返回null(所以沒有太多的指向它們)。

onComplete()isSuccessful()可能false,你有機會處理故障,可能使用getException()獲得更多的細節。

如果您需要處理失敗的任務(你應該!),你有兩個選擇:

  1. 使用和OnCompleteListener,並if(task.isSuccessful()) { ... } else {...} - 這使成功和失敗代碼併攏,並可能這些例程共享狀態很有用。
  2. 單獨使用OnSuccessListenerOnFailureListener - 這使您可以更有凝聚力地編寫偵聽器,因爲每個處理程序都專注於一件事情。當然,一個類可以實現這兩個接口,給你另一種方式來看到相同的狀態。
相關問題