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

4
我有一个后台服务,每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中使用后台服务进行位置更新的限制吗?

这些限制是每小时固定次数吗?


设备运行Android 8的情况下,它每小时会发生3-4次。 - lakshman.pasala
@lakshman.pasala,你有这方面的任何资料吗? - D.M.
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接