gpt4 book ai didi

android - 不能在 onLocationChanged 中设置间隔

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:01:55 25 4
gpt4 key购买 nike

我正在尝试来自 http://developer.android.com/training/location/receive-location-updates.html 的“LocationUpdates”示例.此应用程序获取并打印位置通知。

我正在尝试根据我的最新位置更改位置更新的间隔。

所以 - 我在 onLocationChanged 中添加了 mLocationRequest.setInterval()

结果大错特错。我的应用程序受到许多位置更新的轰炸(几秒钟!!!!)

我对示例的唯一更改是:

private int x=0;
@Override
public void onLocationChanged(Location location) {
// Report to the UI that the location was updated
mConnectionStatus.setText(R.string.location_updated);

// In the UI, set the latitude and longitude to the value received
mLatLng.setText(String.valueOf(x++));

mLocationRequest.setInterval(1000); // Change 1
mLocationClient.requestLocationUpdates(mLocationRequest, this); // Change 2
}

如何更改 onLocationChanged 中的时间间隔?

我认为问题在于 requestLocationUpdates 重置了最后一个请求,然后立即发送另一个通知。因此创建了一个循环。 (比最快间隔更快)。所以我需要一种可靠的方法来更改“实时”LocationRequest 的间隔

最佳答案

您不应该在 onLocationChanged(Location location) 中调用 mLocationClient.requestLocationUpdates(mLocationRequest, this);

由于您再次注册监听器,您将立即接到第一个电话。

所以我会做的是:

  1. 不要调用 mLocationClient.requestLocationUpdates(mLocationRequest, this); 并查看 mLocationRequest.setInterval(1000); 是否生效
  2. 如果这不起作用,请尝试取消注册监听器,然后使用技巧等待,然后再使用新设置再次注册它,例如:

     Handler h = new Handler();
    @Override
    public void onLocationChanged(Location location) {
    //... all your code


    mLocationRequest.setInterval(1000);
    mLocationClient.removeLocationUpdates(LocationListener listener)

    h.postDelayed (new Runnable(){

    public void run(){
    mLocationClient.requestLocationUpdates(mLocationRequest, YOUROUTTERCLASS.this);
    }

    }, 1000);

    }

    因此在一秒钟内没有注册的监听器,因此您不会得到任何更新,之后,监听器将在该时间间隔内注册。

关于android - 不能在 onLocationChanged 中设置间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23324374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com