Android 8中后台服务中的位置更新限制

时间:2017-11-24 10:46:42

标签: android service location background-service android-8.0-oreo

我有一个后台服务,每12分钟更新一次。我们希望每5-6分钟测试一次位置更新,但在Android文档中我们发现了这个:

  

为了降低功耗,Android 8.0(API级别26)   限制后台应用程序检索用户当前频率的频率   地点。应用只能分别接收几次位置更新   小时。

https://developer.android.com/about/versions/oreo/background-location-limits.html

服务中用于接收更新的代码:

    mLocationCallback = new LocationCallback() {
        @Override
        public void onLocationResult(LocationResult locationResult) {
            Location location = locationResult.getLastLocation();
            //...
        }
    };

    mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);

    mLocationRequest = new LocationRequest();

    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    mLocationRequest.setInterval(TIME_TO_CHECK_LOCATION);
    mLocationRequest.setFastestInterval(TIME_TO_CHECK_LOCATION);
    mLocationRequest.setMaxWaitTime(TIME_TO_CHECK_LOCATION);

    mFusedLocationClient.requestLocationUpdates(mLocationRequest, mLocationCallback, null);

是否有人在使用Android 8的后台服务中测试了位置更新的限制?

限制是每小时固定的次数?

1 个答案:

答案 0 :(得分:2)

如果您正在使用融合位置提供商,并且如果其他应用在前台请求位置,或者它正在使用前台服务来请求位置,那么您的应用将获得与此应用一样多的位置。如果没有其他应用程序请求位置,并且您将应用程序置于后台,从我的真实设备测试中,您可以预期在3星Galaxy S8(运行Android 8.0)上每隔3分钟获得一个新位置,在Google Pixel上每5分钟一次(运行Android) 8.1)。看起来这不是一个非常稳定的数字。您可以使用前台服务来收集位置,这没有限制。