在位置更新后执行某些操作的最佳做​​法是什么?

时间:2014-07-14 07:59:41

标签: android android-location

这更像是一个理论问题。 我使用LocationManager.requestSingleUpdate()进行单个位置更新请求,我想对该位置执行某些操作。问题是更新是异步的,我不知道它什么时候完成。 在位置更新完成之后,从未在之前完全调用某些内容的最佳做法是什么?

提前致谢!

4 个答案:

答案 0 :(得分:1)

LocationListener onLocationChanged {{1}}。它似乎是唯一可以做某事的地方

答案 1 :(得分:1)

因此requestSingleUpdate()

有3种类型
  1. requestSingleUpdate(String provider, LocationListener listener, Looper looper): 参数 - 当位置更新可用时将调用onLocationChanged(Location)方法的侦听器和将使用其消息队列来实现回调机制的looper对象,或者为调用线程上的回调而调用

  2. requestSingleUpdate(Criteria criteria, LocationListener listener, PendingIntent intent): 如果调用者提供了挂起的意图,则使用KEY_LOCATION_CHANGED键发送位置更新,并使用挂起的意图发送位置值,并且当位置更新可用于侦听器传递时,将调用onLocationChanged(Location)方法。

  3. 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()方法