我有一个背景服务,每12分钟更新一次位置。我们希望每5-6分钟测试一次位置更新,但是在Android文档中我们发现:
为了降低功耗,Android8.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?的后台服务中测试过位置更新的限制。
限制是每小时固定的次数?
发布于 2018-04-19 21:23:45
如果您使用的是融合位置提供程序,如果另一个应用程序正在请求前台位置,或者使用前台服务请求位置,则您的应用程序将获得与此应用程序相同的位置。如果没有其他应用程序请求定位,并且你把你的应用放在后台,从我真正的设备测试,你可以期待每3分钟在三星银河S8(运行Android8.0),每5分钟运行谷歌像素(运行安卓8.1)的新位置。看起来这不是一个很稳定的数字。您可以使用前台服务收集位置,这是没有限制的。
https://stackoverflow.com/questions/47471600
复制相似问题