电池优化白名单不会阻止Doze推迟我的应用程序

时间:2017-09-13 03:07:11

标签: android gps fusedlocationproviderapi android-doze android-doze-and-standby

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

然而,当手机关闭且未使用时,GPS记录会逐渐消失。 GPS记录之间的时间间隔为15分钟,然后是1小时,2小时,4小时,6小时,然后在我移动电话或打开电话时返回15分钟。

这似乎是由于Android 6中引入的打盹模式。我将应用程序添加到电池优化白名单中,但这并没有什么区别,despite the documentation claiming otherwise

  1. 为什么白名单在这种情况下没有帮助?
  2. 我应该做什么呢? Wakelock会定期延迟并因此阻止打盹吗?

    // 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));
    

1 个答案:

答案 0 :(得分:1)

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

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

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