2

我的应用每 15 分钟向我的服务器发送 GPS 位置数据。此功能是应用程序的核心目的。

但是,当手机关闭且未使用时,GPS 记录会逐渐减少。GPS 记录之间的时间间隔是 15 分钟,然后是 1 小时、2 小时、4 小时、6 小时,然后当我移动手机或打开手机时又回到 15 分钟。

这似乎是由于 Android 6 中引入的打盹模式造成的。我将该应用程序添加到了电池优化白名单中,但这并没有产生任何影响,尽管文档声称并非如此

  1. 为什么白名单在这种情况下没有帮助?
  2. 我应该怎么做?定期唤醒锁会延迟并因此防止打瞌睡吗?

    // Request frequent location updates.
    Intent locationUpdateIntent = new Intent(this, StoreLocationService.class);
    locationUpdateIntent.setAction(MyAwesomeActionName);
    
    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));
    
4

1 回答 1

1

白名单允许网络,但仍会阻止一些 CPU 活动。使用 setAlarmAndAllowWhileIdle() 为列入白名单的应用授予 CPU 使用权。

本文档中提到了更多选项:

https://developer.android.com/training/monitoring-device-state/doze-standby.html#understand_app_standby

于 2017-09-22T09:04:34.140 回答