当前位置: 首页 > 面试题库 >

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

邴姚石
2023-03-14
问题内容

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

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

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

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


问题答案:

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

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

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

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

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

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

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


 类似资料:
  • 问题内容: 我用Java写了一个servlet,我想知道对该servlet的请求是使用HTTP还是HTTPS执行的。 我以为可以使用,但是两种方法都返回HTTP / 1.1。 有任何想法吗? 问题答案: *_答案是 _ *HttpSerlvetRequest.isSecure() 。在以下情况下,ServletContainer负责返回true: ServletContainer本身是否可以接受h

  • 问题内容: 具有以下代码,我如何知道execute()方法是导致插入还是导致更新?: 提前致谢。 问题答案: 考虑下面的MySQL测试表: 现有的样本数据如下: 使用默认的连接设置(在此进行描述),以下Java代码 产生以下控制台输出 现在,再次使用参数值运行相同的代码 控制台输出是 这表明,如果唯一索引导致现有行被更新,则实际上可以返回2。如果您需要有关 实际 测试代码的进一步帮助,则应编辑问题

  • Jenkins有600个插件,在实际系统中,我们用来安装大量的插件。 有时,我们想删除一些插件,使系统更干净,或者用另一个成熟的插件(不同的名称)替换。 这需要确保没有人/没有工作使用这些插件,或者我需要通知他们。 在Jenkins系统的配置或某处是否有任何方法可以知道插件是否被任何作业使用? 更新2013基于下面的答案,我维护简单的“plugin:keyword”映射,如 并从中搜索插件关键字,

  • 穿梭框功能 arr1是穿梭框左侧的全部数据 大致意思是 最后一层的title全部选中就把上一层的title名称放入数组中 如果子children没全部选中则把选中的title放入数组中

  • 我们有一个稍微长大的Spring webapp(在tomcat 7上),关机非常慢。(这对我们持续交付的性能有负面影响) 我的怀疑是,在@PreDestroy方法中肯定有一些bean被阻塞(或占用了很长时间)。 到目前为止,我通过给每个池、线程和计时器指定不同的名称,并确保它们要么是守护进程线程,要么被正确关闭,从而确保它与未正确关闭的线程(池)无关。 有没有人解决了这样的情况,并能给我一个如何应

  • 问题内容: 我必须知道是String还是任何其他类类型,该怎么办?目前,我像下面那样做,但是它的编码不是很好。 问题答案: 是如果对象是或的子类 是仅当对象是一个