一尘不染

我怎么知道是使用OnComplete还是OnSuccess?

java

我试图在网上找到答案,但是找不到特定于Firebase实现的答案。

我可以选择OnCompleteListener,并OnSuccessListener进行了大量的业务Firebase,我想知道我怎么可以在它们之间进行选择?

我已阅读文档的onComplete的onSuccess,但我可以从火力地堡文档,看这一个,例如,对于(如一个具体操作get的示例操作),他们有时用OnSuccessListener,有时他们使用OnCompleteListener

我怎么知道每种情况下哪个更好?有关系吗?考虑到我想知道每个操作是否成功。


阅读 344

收藏
2020-12-03

共1个答案

一尘不染

顾名思义,onSuccess()将在任务成功完成时触发。

onComplete() 即使任务失败,也会在任务完成时触发。

在方法中,您可以调用Task.isSuccessful()Task.getException()

onSuccess()你可以肯定的是,isSuccessful()将返回true,并且getException()将返回null(所以没有太多的点叫他们)。

onComplete()
isSuccessful()false,您有机会处理失败,也许可以利用它getException()来获取更多细节。

如果您需要处理失败的任务(应该!),则有两种选择:

  1. 使用和OnCompleteListener以及if(task.isSuccessful()) { ... } else {...}-将成功代码和失败代码放在一起,如果这些例程共享状态,则可能会很有用。
  2. 使用单独的OnSuccessListenerOnFailureListener-这样可使您编写具有更多内聚力的侦听器,因为每个处理程序都专门处理一件事。当然,一个类可以实现两个接口,这为您提供了另一种让它们看到相同状态的方法。
2020-12-03