英文:
How to create a my own com.google.android.gms.tasks.Task in android?
问题
我想在我的代码中实现以下内容:
fun addAsync(num1: Int, num2: Int): Task<Int> {
var result: Task<Int> = //Task.fromResult(add(num1, num2))
return result
}
fun add(num1: Int, num2: Int): Int {
return num1 + num2
}
在这里,我想知道如何像在 C# 中那样从结果创建一个任务。
英文:
I want to achieve the following in my code
fun addAsync(num1: Int, num2: Int): Task<Int> {
var result: Task<Int> = //Task.fromResult(add(num1,num2))
return result
}
fun add(num1: Int, num2:Int): Int {
return num1+num2
}
here i want to know how to create a task from the result the way it is done in C#.
答案1
得分: 7
以下是翻译好的部分:
正确的方法是使用 TaskCompletionSource:
fun addAsync(num1: Int, num2: Int): Task<Int> {
val t = TaskCompletionSource<Int>();
// 在某个线程或其他地方
t.setResult(add(num1, num2))
return t.task
}
fun add(num1: Int, num2: Int): Int {
return num1 + num2
}
英文:
The correct way is use the TaskCompletionSource:
fun addAsync(num1: Int, num2: Int): Task<Int> {
val t = TaskCompletionSource<Int>();
// in some thread or whatever
t.setResult(add(num1, num2))
return t.task
}
fun add(num1: Int, num2:Int): Int {
return num1+num2
}
答案2
得分: 1
使用Tasks.call(),传递一个Callable的实例:
var result: Task<Int> = Tasks.call { 1 + 2 }
但这会在主线程上执行。如果你想要在另一个线程上执行,传递一个Executor:
val result: Task<Int> = Tasks.call(someExecutor, Callable {
1 + 2
})
英文:
Use Tasks.call(), passing an instance of Callable:
var result: Task<Int> = Tasks.call { 1 + 2 }
But that executes on the main thread. If you want another thread, pass an Executor:
val result: Task<Int> = Tasks.call(someExecutor, Callable {
1 + 2
})
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论