Исследователи из Университета Пердью, занимающиеся вопросами энергетической эффективности работы приложений в Android (недавно они показали, что до 75% потребления энергии приложением относится к процессам показа рекламы в нем), выяснили, что многие приложения неправильно используют API по управлению питанием (wakelock).
Wakelock API в Android был создан для приложений, которым необходима работа процессов даже в тот момент, когда телефон находится в режиме ожидания. Например, почтовой программе нужно автоматически соединяться с сервером для проверки обновлений.
Однако профессор И. Чарли Ху отметил, что «программисты всего лишь люди, и когда они делают ошибки при использовании этого API, батарея может кончиться всего за несколько часов». Ученые назвали это «энергетическим багом отсутствия сна» (no-sleep energy bugs) — фактически он не дает устройству переходить в режим сна и оставляет его все время включенным.
«Вы не видите никакой разницы», — говорит профессор. «Вы кладете телефон в карман и думаете, что все прекрасно. Вы достаете его, а батарея уже умерла».
В ходе исследования они проверили 187 приложений и обнаружили такую ошибку у 42 программ. Это меньше четверти, однако каждое из них может вызвать существенные проблемы с потреблением энергии у смартфона.
Так как команда ученыз американская, а не британская, они не только указала на проблему, но и предложила решение — они модифицировали компилятор так, что он может определить наличие такой ошибки в коде. Его представят на конференции MobiSys 2012, которая пройдет в конце июня.
Автор: HugC