FusedLocationApi.requestLocationUpdates() 一段时间后停止间隔请求

FusedLocationApi.requestLocationUpdates() stops interval requests after a while

这个问题是关于我正在开发的 Android 应用程序。我正在使用 Android 版本 7.

在真实的 phone 上进行测试

我希望 FusedLocationApi 每 15 分钟请求一次 GPS 定位。

当应用程序在前台并且屏幕打开时,GPS 请求按预期发生。

当应用程序最小化且 phone 处于睡眠状态时,更新按预期进行一两个小时,然后逐渐减少并完全停止。似乎轻微的振动或只是打开屏幕(应用程序仍在后台)会触发 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));

我认为这只是因为打瞌睡模式,Google 介绍打瞌睡模式,这是使用互联网或网络的后台服务,当您的设备大约 3 到 5 时,打瞌睡模式处于活动状态-分钟理想或处于待机模式(意味着您正在关闭屏幕,没有任何应用程序使用互联网或网络)。