使用LocationClient定期获取位置的最佳方式?

时间:2014-01-23 19:11:46

标签: android google-play-services location-client

我正在使用LocationClient每分钟获取当前位置:

mLocationRequest = LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(60000);
mLocationRequest.setFastestInterval(60000);
mLocationClient = new LocationClient(this, this, this);
// ... when connected:
mLocationClient.requestLocationUpdates(mLocationRequest, this);

但是我注意到我的LocationListener的onLocationChanged方法每隔60或120(或60的任何其他倍数)秒(+/- 3秒)被调用。文档说:

  

此间隔不准确。您可能根本没有收到更新(如果没有可用的位置源),或者您可能会收到比请求更慢的更新。 [...]

所以我知道,间隔不是一分钟。但我认为在60秒结束后,我会尽快获得当前位置,例如75秒后。但似乎如果LocationClient无法确定位置,它只会在接下来的60秒后重试。

这个假设是否正确?

如果是,则解决方法是将间隔设置为较低的值(如30秒左右)并过滤掉onLocationChanged方法中的所需位置。但这可能会消耗更多的电池电量。

1 个答案:

答案 0 :(得分:2)

当你打电话给mLocationRequest.setFastestInterval(60000);时,你说你不能每60秒处理一次以上的呼叫,因此为什么它会在发送更新之前等待60秒(即使它在45秒之前得到它接下来的60秒) - 降低setFastestInterval以确保在收到位置更新后立即发送给您。由于实际轮询频率与setInterval(而非最快间隔)相关联,因此增加setFastestInterval不应增加电池使用量。