我试图在网上找到它的答案,但找不到特定于 Firebase
实现的答案。
对于Firebase
中的很多操作,我可以在OnCompleteListener
和OnSuccessListener
之间进行选择,我想知道如何选择他们之间?
我已阅读 OnComplete 的文档和 OnSuccess ,但正如我从 Firebase 文档中看到的那样,this one例如,对于一个特定的操作(如示例中的 get
操作),他们有时使用 OnSuccessListener
,有时使用 OnCompleteListener
。
我如何知道在每种情况下哪个更好? 有关系吗?考虑到我想知道每个操作是否成功。
最佳答案
顾名思义,onSuccess()
将在任务成功完成时触发。
onComplete()
将在任务完成时触发,即使它失败了也是如此。
在方法中,可以调用Task.isSuccessful()
和Task.getException()
。
在 onSuccess()
中,您可以确定 isSuccessful()
将返回 true,而 getException()
将返回 null(所以有调用他们没什么意义)。
在onComplete()
中,isSuccessful()
可能是false
,你有机会处理失败,或许使用getException()
以获得更多详细信息。
如果您需要处理失败的任务(您应该这样做!),您有两个选择:
- 使用
OnCompleteListener
,以及if(task.isSuccessful()) { ... } else {...}
-- 这会放置成功和失败代码靠在一起,如果这些例程共享状态可能会有用。 - 使用单独的
OnSuccessListener
和OnFailureListener
- 这允许您编写更具凝聚力的监听器,因为每个处理程序都专注于一件事。当然,一个类可以实现两个接口(interface),为您提供另一种方式让两者看到相同的状态。
关于java - 我怎么知道是使用 OnComplete 还是 OnSuccess?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46649162/