为什么我的应用位置的更新速度是我指定的两倍?

Chr*_*ght 1 android location

在我的应用程序中,我已经设置了一个位置管理器,每10分钟更新一次当前位置(或者我认为).相反,我每5分钟收到一次更新:

10-03 23:45:17.153: DEBUG/TheApp(2025): Location updated with accuracy: 48.0m
10-03 23:50:23.162: DEBUG/TheApp(2025): Location updated with accuracy: 48.0m
10-03 23:55:23.074: DEBUG/TheApp(2025): Location updated with accuracy: 48.0m
10-04 00:00:23.077: DEBUG/TheApp(2025): Location updated with accuracy: 48.0m
Run Code Online (Sandbox Code Playgroud)

这是代码:

LocationManager locationManager = (LocationManager)
                   this.getSystemService(Context.LOCATION_SERVICE);

LocationListener locationListener = new LocationListener() {
    public void onLocationChanged(Location location) {
        Log.d(APP_TAG, "Location updated with accuracy: " + location.getAccuracy() + "m");
    }
    //Other methods are empty and omitted for brevity
};

int TEN_MINUTES = 10 /*Minutes*/ * 60 /*sec per min*/ * 1000 /*ms per sec*/;
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 
                                         TEN_MINUTES, 0, locationListener);
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么这不像我想的那样工作?例如,为什么每5分钟更新一次而不是10分钟?

Tre*_*hns 5

如LocationManager.requestLocationUpdates()的文档中所述:

minTime:通知的最小时间间隔,以毫秒为单位.此字段仅用作节省电量的提示,位置更新之间的实际时间可能大于或小于此值.

因此,无法保证您不会更频繁地(或更少)获得更新.GPS芯片可能能够提供更准确的位置信息而不消耗额外的功率,或者不允许所请求的粒度级别.另一个应用程序也可能在后台请求更新.

回答更多细节,可能需要了解手机中特定GPS接收器的工作原理.