我目前正在使用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建议使用Geofences,尤其是考虑到 Oreo对后台位置请求的限制,所以系统监控工具很奇怪 当它是建议的避免它的方法时,应该考虑到这么多的唤醒。
Ps:我已经阅读了Yvette Colomb答案here,而我没有使用位置更新,只有Geofence服务。我应该放弃吗?
[编辑]在这里可以看到android上的地理围栏文档:https://developer.android.com/training/location/geofencing.html
[编辑2] Android tracker上有一个问题正在讨论这种情况,但在这方面没有新的更新
[编辑3]:问题已在Google问题跟踪器上分配。在~22 / 08/2018
感谢您的关注,
答案 0 :(得分:0)
很明显,此问题在Google的问题跟踪器中被标记为固定。 我还没有验证。
答案 1 :(得分:-1)
这是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);