这个问题与我正在开发的Android应用有关。我正在使用Android 7的真实手机上进行测试。
我希望FusedLocationApi以15分钟的间隔请求GPS定位。
当应用程序处于前台且屏幕打开时,GPS请求会按预期发生。
当应用程序最小化并且手机处于睡眠状态时,更新将按预期进行一两个小时,然后逐渐减小并完全停止。似乎微小的振动或只是打开屏幕(应用仍在后台)会触发GPS更新。
// Request frequent location updates.
Intent locationUpdateIntent = new Intent(this, StoreLocationService.class);
locationUpdateIntent.setAction(StoreLocationService.ACTION_LOCATION_UPDATE);
LocationRequest locationRequest = LocationRequest.create();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setInterval(15 * 60 * 1000); // 15 minutes
locationRequest.setFastestInterval(15 * 60 * 1000); // 15 minutes
LocationServices.FusedLocationApi.requestLocationUpdates(
mGoogleApiClient, locationRequest,
PendingIntent.getService(this, 0, locationUpdateIntent, 0));
最佳答案
我认为这仅仅是因为DOZE模式,Google引入了DOZE模式,这是您使用互联网或网络的后台服务的转折,当您的设备大约需要3到5分钟处于理想状态或处于待机模式时,DOZE模式将处于活动状态(意味着您关闭了屏幕,没有使用互联网或网络的任何应用程序)。