Чрезмерная функция WakeUps, предупрежденная Android Vitals для служб Google Play Services

В настоящее время я работаю над примером приложения для 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 м и следим за выходным переходом, как рекомендовано здесь. Я также использую большую геозону с радиусом до 2 км, чтобы определить, когда мне нужно перезагрузить геозоны, чтобы не загружать слишком много геозон одновременно.

Последние тесты проводились на Android 7.1 на Galaxy S8, но на других устройствах сценарий обычен. У кого-нибудь есть похожая проблема? Google рекомендует использовать Geofences, особенно в свете ограничений Oreo на фоновые запросы местоположения, поэтому странно, что инструмент системного мониторинга учитывает столько пробуждений, когда он предлагает способ избежать этого.

PS: Я прочитал здесь ответ на Yvette Colomb, и я не использую Обновления местоположения, только сервисы Geofence. Должен ли я отказаться от этого?

[Редактировать] Документацию по геозонам на Android можно посмотреть здесь: https://developer.android.com/training/location/geofencing.html

[Редактировать 2] Существует проблема на трекере Android, которая обсуждает эту ситуацию, но новых обновлений также нет

[Изменить 3]: проблема была назначена в системе отслеживания проблем Google. ~ 22/08/2018

Спасибо за внимание,

Ответ 1

Видимо эта тема на гугл трекере была помечена как исправленная. Я все еще должен проверить это все же.

Ответ 2

Это проблема с тем, что 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);