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: я прочитал ответ Иветты Коломб здесь, и я не использую обновления местоположения, только сервисы Geofence. Должен ли я отказаться от него?

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

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

[Редактировать 3]: проблема была назначена в системе отслеживания проблем Google. ~22.08.2018

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


person Gabriel Falcone    schedule 23.02.2018    source источник
comment
Это зависит от того, какова ваша цель для вашего приложения. Android Vitals создан в качестве инициативы по повышению стабильности и производительности Android-устройства. Собранные данные помогут вам улучшить стабильность и производительность вашего приложения. Это поможет вам максимально увеличить заряд батареи телефона, когда ваше приложение используется. Возможно, потребуется некоторая корректировка на основе данных, которые вы получили. Надеюсь это поможет.   -  person Mr.Rebot    schedule 25.02.2018
comment
Спасибо за Ваш ответ! Но моя проблема в том, что даже при использовании базовых геозон, в соответствии с рекомендациями Google, цифры превышают требования Android Vitals. Еще хуже то, что все приложения Google (например, Google Maps) намного превышают количество пробуждений (достигает 14 пробуждений в час, когда предел равен 10). В моем сценарии я просто предупреждал пользователя, когда он уходит из дома, чтобы выполнить действие, которое он определил (например). Я думаю, что либо политика для Android Vitals должна быть переоценена, либо должны быть обновлены службы геозоны Android. :(   -  person Gabriel Falcone    schedule 25.02.2018
comment
@GabrielFalcone, вы нашли какое-нибудь решение этой проблемы?   -  person aga    schedule 21.05.2018
comment
@aga Неудовлетворительный. В конце концов я прибегнул к своим собственным проверкам и более крупному геозону (500 м). Это заставило мое приложение просыпаться «больше», но счетчик сигналов тревоги в целом был уменьшен (с 15 до ~ 6 в худшем случае), что все же лучше, чем его запуск.   -  person Gabriel Falcone    schedule 23.05.2018
comment
Я вижу, что кто-то создал отчет об ошибке для Android с той же проблемой. Однако этот тикет по-прежнему имеет статус «Новый» без ответа. Билет находится здесь: issuetracker.google.com/issues/78591747 Любопытно, если кто-то нашел лучший обходной путь.   -  person Mark    schedule 09.08.2018
comment
Да, я знал об этой проблеме, но обновлений до этого момента не было. Я тоже включу в основной пост, спасибо за информацию! @Отметка   -  person Gabriel Falcone    schedule 10.08.2018


Ответы (2)


Судя по всему, эта тема в системе отслеживания проблем Google была отмечена как исправленная. Хотя мне еще предстоит это проверить.

person Gabriel Falcone    schedule 18.07.2019

Это проблема, связанная с тем, что 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);
person Null Pointer Exception    schedule 30.03.2018
comment
Боюсь, это не вариант, так как я не запрашиваю местоположение, а только геозоны, и, следовательно, нет ни самого быстрого интервала, ни приоритета. Документация по геозонам находится здесь: developer.android.com/training/location/geofencing.html. . Я использовал все доступные параметры для уменьшения, такие как уменьшение задержки отклика, но ни один из них не был удовлетворительным. :( - person Gabriel Falcone; 13.04.2018