【问题标题】:onSuccessTask vs addOnSuccessListener?onSuccessTask 与 addOnSuccessListener?
【发布时间】:2019-11-07 09:15:00
【问题描述】:

我将Google Firestore 用于Android 数据库,并想知道onSuccessTaskaddOnSuccessListener 之间的区别。

例如,这是我更新 Firestore 文档:

val doc = db.collection("books").document(book).update(data)

对于上述情况,要在更新完成后采取行动,我可以这样做:

.onSuccessTask { } or .addOnSuccessListener { }

对我来说,产生完全相同的结果。

有人可以弄清楚有什么区别以及应该使用哪一个吗?

【问题讨论】:

    标签: android firebase kotlin google-cloud-firestore


    【解决方案1】:

    Task 的addOnSuccessListener() 方法有三种风格,分别是:

    添加一个在任务成功完成时调用的侦听器。

    添加一个在任务成功完成时调用的侦听器。

    添加一个 Activity 范围的侦听器,如果 Task 成功完成,则调用该侦听器。

    Task 的两种onSuccessTask() 方法是:

    返回一个新任务,当此任务成功完成时,该任务将完成,并将指定的 SuccessContinuation 应用于此任务。

    返回一个新任务,当此任务成功完成时,该任务将完成,并将指定的 SuccessContinuation 应用于此任务。

    正如您可能看到的,主要区别在于,在addOnSuccessListener() 的情况下,返回的对象是abstract Task<TResult> 类型,因此每次使用它时,您都需要为此提供一个实现使用onSuccessTask()方法时,返回的对象类型为<TContinuationResult> Task<TContinuationResult>(非抽象)。

    【讨论】:

      【解决方案2】:

      基本上,当您只想处理结果时,您可以使用addOnSuccessListener,而onSuccessTask 可以与其他方法(例如continueWithcontinueWithTask)一起使用以链接任务。

      这里是an article about chaining tasks

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-27
        • 2018-09-23
        • 1970-01-01
        • 1970-01-01
        • 2020-10-20
        • 2020-09-17
        相关资源
        最近更新 更多