我正在使用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方法中的所需位置。但这可能会消耗更多的电池电量。
答案 0 :(得分:2)
当你打电话给mLocationRequest.setFastestInterval(60000);
时,你说你不能每60秒处理一次以上的呼叫,因此为什么它会在发送更新之前等待60秒(即使它在45秒之前得到它接下来的60秒) - 降低setFastestInterval
以确保在收到位置更新后立即发送给您。由于实际轮询频率与setInterval
(而非最快间隔)相关联,因此增加setFastestInterval
不应增加电池使用量。