Android Vitals 针对 Google Play Services geofences 警告过度唤醒

Excessive WakeUps warned by Android Vitals for Google Play Services geofences

我目前正在开发 Android 的示例应用程序,它使用 用于位置监控的地理围栏,我发现很难遵守 Android Vitals 背景唤醒限制 (https://developer.android.com/topic/performance/vitals/wakeup.html)。

我正在使用 Battery Historian 来监控唤醒,而我们自己的 警报的频率低于每小时一个,两者都 com.google.android.location.ALARM_WAKEUP_ACTIVITY_DETECTION com.google.android.location.ALARM_WAKEUP_LOCATOR 以更高的速率触发。 我尝试将地理围栏响应延迟设置为 5 分钟,并且 WAKEUP_LOCATOR 警报 大大减少了。尽管如此,ALARM_WAKEUP_ACTIVITY_DETECTION 警报仍然远远超过每小时 10 次的限制。

我们按照建议使用半径为 100 米的地理围栏并监控出口过渡 here。我还使用半径高达 2 公里的更大地理围栏来定义何时需要重新加载地理围栏,以避免一次加载太多地理围栏。

最近的测试是在 Galaxy S8 上的 Android 7.1 上进行的,但这种情况在其他设备上很常见。 有没有人有类似的问题? Google 建议使用地理围栏,尤其是考虑到 奥利奥对后台位置请求的限制,所以奇怪的是系统监控工具是 当这是避免它的建议方法时,考虑了这么多的唤醒。

Ps:我已阅读 Yvette Colomb 的回答 ,而且 我没有使用位置更新,仅使用地理围栏服务。我应该放弃吗?

[编辑] android 上的地理围栏文档可在此处查看:https://developer.android.com/training/location/geofencing.html

[编辑 2]Android tracker 上有一个问题正在讨论这种情况,但在这方面也没有新的更新

[编辑 3]:问题已在 Google 问题跟踪器上分配。在 ~22/08/2018

感谢您的关注,

这是一个问题,与 com.google.android.location.ALARM_WAKEUP_LOCATOR 每 60 秒唤醒一次设备并保持唤醒状态长达 15 秒有关,这会导致严重的电池耗尽问题。

对于地图,您必须设置更多时间来更新位置间隔。在我的情况下,我这样做了 让我知道它是否有效

 private long UPDATE_INTERVAL = 5 * 6000;
    private long FASTEST_INTERVAL = 6000;
//Set max update intervel for remove excessive wakeups...
        mLocationRequest.setInterval(UPDATE_INTERVAL);
        mLocationRequest.setFastestInterval(FASTEST_INTERVAL);
        mLocationRequest.setMaxWaitTime(30 * 60000);
        mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);

显然 Google 的问题跟踪器上的这个主题已被标记为已修复。 我还没有验证它。