Какие ошибки вы исправили из-за проблем неэффективного использования энергии при разработке мобильных приложений
Для тех, кто пишет приложения для мобильных телефонов, какие ошибки / проблемы вы исправили, чтобы повысить энергоэффективность, и насколько это исправление улучшилось?
Дополнительный вопрос: считается ли энергоэффективность такой же важной, как и функции, и избегать ли функциональных ошибок при написании мобильных приложений?
5 ответов
Чтобы сначала ответить на дополнительный вопрос, очень немногие клиенты замечают разницу в эффективности использования энергии или времени автономной работы от использования определенного приложения. Это почти никогда не упоминается в обзорах App Store. Я пишу энергоэффективный код в основном потому, что я не хочу разряжать батареи моего собственного устройства во время тестирования и использования моих приложений.
Некоторые предложения для приложений iPhone:
Напишите свое приложение так, чтобы оно хорошо работало на самом медленном устройстве (iPhone 2G или 3G) с самой медленной ОС (4.x на 3G). Тогда он в основном может простаивать на гораздо более быстрых современных устройствах.
В графических процедурах старайтесь не перерисовывать что-либо уже нарисованное. Используйте небольшой CALayer или вспомогательное представление для локализованных графических обновлений / изменений.
Используйте как можно больше асинхронных методов, чтобы ваше приложение большую часть времени даже не работало на процессоре.
Используйте простые структуры данных C (вместо объектов Foundation) и упакуйте их так, чтобы рабочий набор вашего приложения мог полностью оставаться в очень ограниченном кеше данных процессора ARM, если это возможно.
Не занимайтесь сетью больше, чем необходимо. Выполняйте максимально возможную передачу данных за один раз, чтобы радиостанции могли дольше отключаться между сетевым использованием вашего приложения вместо множества непрерывных небольших передач.
EE важно, особенно если приложение постоянно работает в фоновом режиме.
Мы должны были по возможности заменить методы опроса методами, основанными на событиях. Если это было невозможно, мы уменьшили частоту опроса.
Кроме того, уменьшение чтения / записи файла до минимума значительно сокращает расход заряда батареи.
- Обрабатывать изображения + вычисления на сервере для телефонов с низким процессором, а не с помощью процессора для телефонов (не применимо к телефонам iPhone + Android)
- Рисуйте на экране только тогда, когда это необходимо, а не бесконечно
- Всегда сохраняйте состояние, чтобы пользователь мог войти в приложение, в котором он остановился, если прерывание приводит к тому, что ваше приложение переводится в фоновый режим.
- Избегать бегать в фоновом режиме, где это возможно? Вы действительно должны или можете подождать, пока приложение не будет в фокусе
- Избегайте использования точного местоположения зерна, где грубое местоположение сделало бы (GPS против сотового местоположения)
- Используйте push-pull везде, где возможно сохранить опрос сети
Эффективность использования энергии в мобильных устройствах равносильна ограничениям памяти во встроенных системах.
В частности, мне нравятся приложения GPS, поэтому я должен убедиться, что GPS включен только на минимальное время. Конечно, когда появляются ошибки, которые заставляют GPS включаться слишком долго, они идут в верхнюю часть списка, чтобы исправить.
Итак, короткий ответ: да, энергоэффективность, безусловно, так же важна, как и функции.
В моих живых обоях на основе opengl время автономной работы является серьезной проблемой.
Придерживайтесь минимального использования датчика, есть много разных профилей, используйте задержку, которая вам требуется.
Чтобы максимизировать батарею в LWP, я обычно устанавливаю задержку кадра 5 мс по умолчанию. Похоже, этого достаточно для того, чтобы процессор мог расслабляться между кадрами и поддерживать достаточно низкое использование. Вы также можете управлять временем ожидания, основываясь на текущем FPS, и прикрепить его к профилю FPS. Например, устройство может воспроизводить 60 кадров в секунду, но вы просто делаете рендеринг со скоростью 30 кадров в секунду и спите половину времени.
Для игр вы можете сделать то же самое, просто установите ограничение fps в вашем движке и не позволяйте ему превышать это значение.
Если вы хотите быть хардкорным, осознайте, что OLED, используемые во многих устройствах Android, используют больше энергии для отображения светлых цветов, а не темных. На ЖК-дисплее одинаковая подсветка, но на OLED черный пиксель отключен и не потребляет энергию. Таким образом, чем темнее ваш экран, тем дольше будет работать аккумулятор. Что-то, чтобы рассмотреть в определенных ситуациях, если вы хотите быть действительно хардкорным на стороне батареи вещей.
Не используйте GPS, не используйте 3G, и если вы все кешируете локально.