Получение PARTIAL_WAKELOCK каждые 10 секунд

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

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

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

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

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

2 ответа

Решение

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

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

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

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

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

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

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

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

Другие вопросы по тегам