这更像是一个理论问题。
我使用LocationManager.requestSingleUpdate()
进行单个位置更新请求,我想对该位置执行某些操作。问题是更新是异步的,我不知道它什么时候完成。
在位置更新完成之后,从未在之前完全调用某些内容的最佳做法是什么?
提前致谢!
答案 0 :(得分:1)
LocationListener
onLocationChanged
{{1}}。它似乎是唯一可以做某事的地方
答案 1 :(得分:1)
因此requestSingleUpdate()
requestSingleUpdate(String provider, LocationListener listener, Looper looper)
:
参数 - 当位置更新可用时将调用onLocationChanged(Location)
方法的侦听器和将使用其消息队列来实现回调机制的looper对象,或者为调用线程上的回调而调用
requestSingleUpdate(Criteria criteria, LocationListener listener, PendingIntent intent)
:
如果调用者提供了挂起的意图,则使用KEY_LOCATION_CHANGED键发送位置更新,并使用挂起的意图发送位置值,并且当位置更新可用于侦听器传递时,将调用onLocationChanged(Location)
方法。
public void requestSingleUpdate (Criteria criteria, PendingIntent intent)
:这与 2 相同,但不会调用onLocationChanged()
。
答案 2 :(得分:0)
您可以在位置更新后执行以下操作:
@Override
public void onLocationChanged(Location location) {
if (location != null) {
// Do what ever you want here for example here I am showing toast like
userCurrentLatitude = location.getLatitude();
userCurrentLongitude = location.getLongitude();
Toast.makeText(this, "you are at: " + userCurrentLatitude + "," + userCurrentLongitude, Toast.LENGTH_LONG).show();
}
}
答案 3 :(得分:-1)
我希望你在android中使用新的融合位置提供程序,因为它更准确,更节能。你实现融合位置提供程序的活动你将有方法
@Override
public void onReceiveLocation(Location location)
{
latitude=location.getLatitude();
longitude=location.getLongitude();
}
在此方法中执行您想要执行的任何操作,因为只有在收到位置或者您正在使用locationlistner时才会调用此方法,然后执行相同的操作onLocationChanged()方法