onSuccessTask与addOnSuccessListener?

时间:2019-06-25 13:49:57

标签: android firebase kotlin google-cloud-firestore

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

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

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

对于上述情况,要在更新完成时采取措施,我可以执行以下任一操作:

.onSuccessTask { } or .addOnSuccessListener { }
对我来说,

产生完全相同的结果。

有人可以弄清区别是什么,应该使用哪一个?

2 个答案:

答案 0 :(得分:2)

Task的addOnSuccessListener()方法有以下三种:

  

添加一个侦听器,如果任务成功完成,将调用该侦听器。

  

添加一个侦听器,如果任务成功完成,将调用该侦听器。

  

添加一个活动范围侦听器,如果任务成功完成,则将调用该侦听器。

Task的onSuccessTask()方法有两种:

  

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

  

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

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

答案 1 :(得分:0)

基本上,您只想使用结果时就使用addOnSuccessListener,而onSuccessTask可以与continueWithcontinueWithTask等其他方法一起使用链接任务。

这里是an article about chaining tasks