AIR для iOS: энергосбережение - PullRequest
3 голосов
/ 29 марта 2012

Какие приемы кодирования, флаги компиляции, соображения архитектуры программного обеспечения можно применять для поддержания низкого энергопотребления в приложении AIR для iOS (или для снижения энергопотребления в существующем приложении, которое расходует слишком много батареи)?

Ответы [ 3 ]

2 голосов
/ 29 марта 2012

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

Вы можете сделать это, добавив обработчики внутри вашего App.mxml

<s:ViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
                        xmlns:s="library://ns.adobe.com/flex/spark"
                        activate="activate()" deactivate="close()" />

ВнутриВаши методы активации и закрытия

//activate
FlexGlobals.topLevelApplication.frameRate = 24;

//deactivate
FlexGlobals.topLevelApplication.frameRate = 2;

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

1 голос
/ 29 марта 2012

Как правило, высокое энергопотребление может быть результатом:

  • интенсивное использование сети
  • нет спящего режима для отображения в режиме ожидания приложения
  • использование ненужных услуг определения местоположения
  • постоянно высокая загрузка процессора

Что касается (flex / flash) AIR, я бы предложил:

Сначала вы используете Flex-профилировщик + диспетчер задач и отслеживает использование ЦП и памяти. Постарайтесь уменьшить их как можно больше. Как только у вас будет такой низкий уровень на Windows / Mac, они будут понижаться (теоретически на мобильных устройствах)

Следующим шагом будет использование сетевого монитора и уменьшение количества и размера сетевых (веб-сервисных) вызовов. Попробуйте определить ненужную сетевую активность и устранить ее.

Попытайтесь обнаружить любое состояние бездействия приложения (возможно, во флексе, не уверен во флэш-памяти) и, возможно, перевести все приложение в режим ожидания (если у вас запущена анимация фейерверков, просто вызовите stop ())

Также я не уверен в этом, но наверняка уменьшу процессор и использую больше gpu: используя Stage3D (теперь доступно с air 3.2 также для мобильных устройств), когда вы делаете сложные anymation. Это может сократить время выполнения, так как есть HW Accele, поэтому потребление энергии может быть ниже.

Если я что-то не так, пожалуйста, прокомментируйте / понизьте (как вам нравится), но это мое личное впечатление.

Обновление 1

Как указано в комментариях, нет 100% -ной связи между использованием процессора на настольном компьютере и на мобильном устройстве, но «теоретически» на низком уровне у нас должна быть как минимум та же тенденция использования процессора.

0 голосов
/ 03 июля 2012

Мои советы:

  • Профилируйте свое приложение на первом этапе с помощью профилировщика из Flash Builder
  • Если у вас Mac, профилируйте свое приложение с помощью инструментов из XCode

И важно:

поведение пакетов Simulator, IPA-Interpreter и сборок IPA-Test различается.

Simulator - оптимизация проформ

IPA-Interpreter - получите представление о производительности

IPA-Test - "реальное" поведение производительности

И, наконец, протестируйте AppStore-Build, это самый быстрый (в смысле производительности) режим пакета.Дополнительно мы увидели, что все эти режимы могут варьироваться.

...