这是关于 Task .
task.continueWith()
和 task.continueWithTask()
有什么区别,你能分别举个例子吗?
最佳答案
continueWith 之间的主要区别和 continueWithTask是 Continuation 的通用类型之一你传递给它。
您可以将 Continuation 视为将某种输入类型转换为某种输出类型的东西。如果你定义一个 Continuation<IN, OUT>
, 其中IN
是传递给其 then
的输入类型通过 Task<IN>
的方法, 和 OUT
是方法返回的类型。
调用continueWith
时,你传递一个 Continuation<IN, OUT>
, 和 then
方法应计算并返回 OUT
给定 Task<IN>
的值值作为输入。如果您没有为转换做任何阻塞工作,例如将整数数组减少为其元素的总和或计算字符串中的单词数,您可能会选择这样做。
调用continueWithTask
时,你传递一个 Continuation<IN, Task<OUT>>
, 和 then
方法预计返回 Task<OUT>
最终生成 OUT
值,给定 IN
值作为输入。如果您能够将转换工作委派给现有的可重用任务,则可以选择此选项。
实际上,您不需要选择一个或另一个来完成您的工作。这是一个偏好风格的问题,或者如果你有一个不错的 Task
准备好委托(delegate)您的谈话而不是 Continuation
.通常,如果您有一个要链接在一起的转换管道,您只会使用 Continuations。
此处的 javadoc 链接显示了一些 Continuations 示例。此外,要了解更多信息,您可以在 part three 中阅读它们。我的博客系列。公平地说,continueWithTask
是任务 API 的唯一部分,我不会在该系列的任何地方直接讨论,主要是因为从概念上讲,它与 continueWith
没有太大区别。 .
关于android - Google Play 服务任务 API : continueWith vs continueWithTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40161333/