这个问题与我正在开发的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模式将处于活动状态(意味着您关闭了屏幕,没有使用互联网或网络的任何应用程序)。

07-27 21:01