Получение PARTIAL_WAKELOCK каждые 10 секунд - PullRequest
4 голосов
/ 13 апреля 2011

Есть ли проблемы с приложением, которое получает частичную блокировку после 10-секундного интервала. Мой вариант использования для этого заключается в возможности постоянного отслеживания движения пользователя через акселерометр устройства. По сути, у меня есть служба, которая вызывается по тревоге каждые 10 секунд.

Эта служба получает блокировку от пробуждения, получает некоторые показания акселерометра для определения текущего состояния движения и затем снимает блокировку от пробуждения. Общее время службы составляет около 4 секунд.

Насколько я понимаю, это приводит к тому, что устройство бодрствует в течение примерно 24 секунд каждую минуту. Хотя это и не идеально, я бы хотел надеяться, что это все же более эффективная практика, чем постоянная блокировка пробуждения в течение всего срока службы моего приложения.

С другой стороны, возможно ли, что действие по сбору и снятию блокировочного устройства в такой короткий промежуток времени столь же плохо сказывается на сроке службы батареи?

Любой вклад приветствуется.

Ответы [ 2 ]

1 голос
/ 14 апреля 2011

Как отмечается в комментариях, это действительно не очень хорошая идея. Как и в «рейтингах« одна звезда на рынке »», это не очень хорошая идея.

Акселерометр предназначен для использования в беговой деятельности (например, в игре), и это все. Он абсолютно не предназначен для использования в режиме, в котором вы пытаетесь.

Вы также предполагаете, что устройство засыпает сразу после вашего выпуска WakeLock. Это может или не может быть правдой. Я подозреваю, что вы обнаружите, что вы заставляете процессор включаться значительно дольше, чем на 40% доступного времени, даже если вы только обязываете его включать на 40%.

Я настоятельно рекомендую вам просмотреть презентацию Джеффа Шарки об энергопотреблении в Android с конференции Google I | O 2009 года .

0 голосов
/ 05 декабря 2012

Вы когда-нибудь использовали приложение MyTracks? http://code.google.com/p/mytracks/

В последний раз, когда я проверял, они используют блокировку от пробуждения, когда у пользователя есть активный путь.

У меня та же проблема, что и у вас - и хотя я предпочел бы не использовать блокировку от пробуждения, мое приложение разрушается, если ОС по пути убивает приложение. Прямо сейчас мы делаем это, затрачивая около 10% времени автономной работы в час - что не так уж и плохо. Это конечно не здорово, но наш средний путь составляет всего около 20 минут. И это работает.

Использование Alarm Manager кажется лучшим маршрутом. Какие-нибудь хорошие примеры того, как использовать это для такой ситуации?

...