将值传递给方法之外

时间:2019-01-12 20:06:59

标签: java android firebase geofire

我已将位置源和目的地声明为全局变量。但是尽管我没有在dist中获得正确的值。我应该如何在geoFire.getLocation()方法之外传递location的值?或者如何通过geofire来获取两个地理位置之间的距离?

我尝试通过将源和目标设为静态来实现。但这没用。

max

1 个答案:

答案 0 :(得分:0)

Firebase API是异步的,这意味着onLocationResult()方法在调用后立即返回,并且它返回的Task中的回调将在一段时间后调用。无法保证需要多长时间,可能需要几百毫秒到几秒钟才能获得该数据。

由于该方法会立即返回,因此尚未从回调中填充要尝试返回的dist变量的值。

基本上,您正在尝试从异步的API同步返回值。那不是一个好主意。您应该按预期异步处理API。

对此问题的快速解决方案是仅在dist方法内使用onLocationResult()变量的值,否则我建议您从此 { {3}} ,其中我解释了如何使用自定义回调来完成。您也可以查看此 post 以获得更好的理解。