如何从Anko的异步内部获取值? (KotlIn)

问题描述 投票:0回答:1

我有一个函数,该函数使用Anko's异步来调用Google的Distance API,并获取从一个位置到另一个位置的距离。不幸的是,我不知道如何从异步内部获取数据并将其传递给另一个函数。代码看起来像这样

fun getDistance(location1:LatLng,location2:LatLng){
    async{
        val result = URL(url).readtext() 
        uithread{
            //Parser
            //distance value
        }
    }
}

我也想提一提我对Kotlin或android开发来说真的很新,请客气。

android-studio kotlin android-activity android-asynctask anko
1个回答
0
投票

有很多方法可以解决这个问题;将对象与数组一起传递到函数中,然后在函数中重新排列,或者执行类似以下操作:

fun getDistance(location1 : LatLng, location2 : LatLng, f: (Long) -> Unit){
    doAsync{ // Anko is deprecated as I have been made aware
        val result = URL(url).readtext()
        val distance : Long = // parse result
        uiThread{
            f(distance)
        }
    }
}

并使用]致电>

getDistance(loc1, loc2) { toast("The found distance was $it") }

这绝不是唯一的方法;您可以更新一个更大范围的变量,调用一个侦听器,将经纬度放在一个具有被调用的更新函数的类中,或者用其他很多我懒得考虑的方式:)

© www.soinside.com 2019 - 2024. All rights reserved.