Какие ошибки вы исправили из-за проблем неэффективного использования энергии при разработке мобильных приложений - PullRequest
3 голосов
/ 06 декабря 2010

Для тех, кто пишет приложения для мобильных телефонов, какие ошибки / проблемы вы исправили с целью повышения энергоэффективности и насколько исправление улучшилось?

вопрос: считается ли энергоэффективность такой же важной, как функции, и избегает ли функциональных ошибок при написании мобильных приложений?

Ответы [ 5 ]

1 голос
/ 06 декабря 2010

Чтобы ответить на следующий вопрос в первую очередь, очень немногие клиенты замечают какую-либо разницу в эффективности использования энергии или времени автономной работы от использования определенного приложения.Это почти никогда не упоминается в обзорах App Store.Я пишу энергоэффективный код в основном потому, что я не хочу разряжать батареи собственного устройства во время тестирования и использования своих приложений.

Некоторые предложения для приложений iPhone:

  1. Напишите свое приложение так, чтобы оно хорошо работало на самом медленном устройстве (iPhone 2G или 3G) с самой медленной ОС (4.x на 3G).Тогда он в основном может простаивать на гораздо более быстрых современных устройствах.

  2. В графических процедурах старайтесь не перерисовывать что-либо уже нарисованное.Используйте небольшой CALayer или вспомогательное представление для локализованных графических обновлений / изменений.

  3. Максимально используйте асинхронные методы, чтобы ваше приложение большую часть времени даже не работало на процессоре.

  4. Используйте простые структуры данных C (вместо объектов Foundation) и упакуйте их так, чтобы рабочий набор вашего приложения мог полностью оставаться в очень ограниченном кеше данных процессора ARM, если это возможно.

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

1 голос
/ 06 декабря 2010

EE важно, особенно если приложение постоянно работает в фоновом режиме.

Мы должны были по возможности заменить методы опроса методами, основанными на событиях. Если это было невозможно, мы уменьшили частоту опроса.

Кроме того, сокращение чтения / записи файла до минимума значительно сокращает расход заряда батареи.

1 голос
/ 06 декабря 2010
  1. Обработка изображений + расчеты на сервере для телефонов с низким процессором вместо использования процессора для телефонов (не применимо к телефонам iPhone + Android)
  2. Рисовать на экране только при необходимости, а не бесконечно
  3. Сохранять состояние всегда, чтобы пользователь мог войти в приложение, в котором он остановился, если прерывание приводит к тому, что ваше приложение помещается в фоновый режим
  4. Избегать работы в фоновом режиме, где это возможно? Вы действительно должны или можете подождать, пока приложение сфокусировано
  5. Избегайте использования мелкозернистого местоположения там, где было бы грубое местоположение (GPS против сотового местоположения)
  6. Используйте push-pull, когда это возможно, для опроса сети
1 голос
/ 06 декабря 2010

Эффективность использования энергии в мобильных устройствах равносильна ограничениям памяти во встроенных системах.

В частности, мне нравятся приложения GPS, и поэтому убедитесь, что GPS включен только в течение минимума времени. Конечно, когда появляются ошибки, которые заставляют GPS включаться слишком долго, они идут в верхнюю часть списка, чтобы исправить.

Итак, короткий ответ: да, энергоэффективность, безусловно, так же важна, как и функции.

0 голосов
/ 06 декабря 2010

В моих живых обоях на основе opengl время автономной работы является серьезной проблемой.

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

Длямаксимизировать батарею в LWP Я обычно заставляю задержку кадра 5 мс по умолчанию.Похоже, этого достаточно для того, чтобы процессор мог расслабляться между кадрами и поддерживать достаточно низкое использование.Вы также можете управлять временем ожидания, основываясь на текущем FPS, и прикрепить его к профилю FPS.Например, устройство может воспроизводить 60 кадров в секунду, но вы просто делаете рендеринг со скоростью 30 кадров в секунду и спите наполовину.

Для игр, которые вы можете сделать то же самое, просто установите ограничение fps в вашем движке и не позволяйте ему превышатьтот.

Если вы хотите быть хардкорным, осознайте, что OLED, используемые во многих устройствах Android, используют больше мощности для отображения светлых цветов, а не темных.На ЖК-дисплее одинаковая подсветка, но на OLED черный пиксель отключен и не потребляет энергию.Таким образом, чем темнее экран, тем дольше будет работать аккумулятор.Что-то, что следует учитывать в определенных ситуациях, если вы хотите быть действительно хардкорным на стороне батареи.

Не используйте GPS, не используйте 3G, и если вы все кешируете локально.

...