我的应用程序使用 LocationListener 来跟踪当前位置。只要 GPS 提供商提供定期修复,它就可以正常工作。但是,我希望我的应用程序在位置不再可靠时提醒用户,因为修复不再是最新的。因此,我使用 timeCheckHandler 每隔几秒调用一次 getLastKnownLocation。
我的问题是,即使经常收到准确的修复,通过将 getTime() 应用于 getLastKnownLocation 返回的位置返回的时间通常比 System.currentTimeMillis() 返回的当前时间早,通常大约 20 秒。
我通过向 onLocationChanged(arg0) 添加代码以记录修复时间 (arg0.getTime()) 和当前时间 (System.currentTimeMillis()) 进一步调查了该问题。我再次看到大约 20 秒的差异。
目前代码如下:
public void onLocationChanged(Location arg0) {
mapview.handleLocationChanged(mapview, arg0.getLatitude(), arg0.getLongitude(), arg0.getBearing(), arg0.getAccuracy(), "GPS fix");
addDebugNote("Fix received at time: "+Long.toString(arg0.getTime()/1000)+" Now: "+Long.toString((System.currentTimeMillis())/1000));
}
我的调试文件的典型输出为:
Fix received at time: 1292091908 Now: 1292091928
为什么我会看到修复时间和当前系统时间之间的这种差异?
我必须接受大约 20 秒的差异是正常的吗?