【发布时间】:2019-12-10 14:09:54
【问题描述】:
例如,我使用 FusedLocationProviderClient 访问当前位置,它返回一个任务,该回调最终将返回该位置。该方法如下所示:
fun getLocation(callback: MyCallback){
val flpc = LocationServices.getFusedLocationProviderClient(it)
flpc.lastLocation.addOnSuccessListener {
callback.onLocation(it)
}
}
是否可以对其进行转换,以便我可以使用协程挂起此函数并等待flpc.lastLocation 返回的任务,以便我可以在此方法中返回它,从而摆脱该回调?例如这样的:
suspend fun getLocation(): Location? =
withContext(Dispachers.IO){
val flpc = LocationServices.getFusedLocationProviderClient(it)
return@withContext flpc.lastLocation.result()
}
我的问题是协程周围是否有什么东西可以返回 Task 的结果(在本例中为 Task<Location>)
提前致谢!
【问题讨论】:
-
你可以尝试使用LiveData
标签: android task kotlin-coroutines