【问题标题】:How to create a my own com.google.android.gms.tasks.Task in android?如何在 android 中创建我自己的 com.google.android.gms.tasks.Task?
【发布时间】:2020-04-05 09:34:08
【问题描述】:

我想在我的代码中实现以下目标

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# 中完成的那样。

【问题讨论】:

    标签: java android firebase kotlin google-cloud-firestore


    【解决方案1】:

    正确的方法是使用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】:

    使用Tasks.call(),传递一个Callable实例:

    var result: Task<Int> = Tasks.call { 1 + 2 }
    

    但这在主线程上执行。如果你想要另一个线程,传递一个 Executor:

    val result: Task<Int> = Tasks.call(someExecutor, Callable {
        1 + 2
    })
    

    【讨论】:

    • 此方法已被弃用...应该是新的正确方法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 2011-08-04
    相关资源
    最近更新 更多