Вопрос

Есть ли какие-либо «лучшие практики» для написания энергоэффективного задний план Применение в Symbian?

В частности, есть ли способ (то есть API) для приложения Symbian, чтобы подсказать ОС относительно его текущего состояния, чтобы уменьшить потребление аккумулятора? Например, в Android есть понятие Разбойники, что предотвращает устройство в режиме ожидания - это что-нибудь похожее в Symbian?

РЕДАКТИРОВАТЬ:
Существуют ли какие-либо последствия при выполнении кода в качестве отдельного потока с библиотекой Open-C, а не как «родной» Symbian C ++, используя активные объекты и т. Д.? (код Open-C блокируется на IO большую часть времени).

Это было полезно?

Решение

  1. Вы можете проверить активность пользователя (in-) с помощью метода rtimer :: бездействия (). Этот способ описан в Форум Nokia Wiki Page страница. Отказ Там также описано, как вы можете сбросить таймер бездействия.
  2. Вы можете проверить, включено ли экран устройства или выключен с использованием HAL API. См. Классы Hal и Haldata. Вы можете использовать такой звонок:

TInt displayState; HAL::Get(HALData::EDisplayState, displayState);И дисплей отобразится либо 0, если дисплей выключен или 1 в другом случае.

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

Вы также можете использовать Profiler Energy Nokia Приложение для записи энергопотребления трубки, с различными вариантами энергосбережения вашего фонового обслуживания. Также, пожалуйста, обратитесь к Nokia's документ Описывая лучшие практики для экономии мощности устройства. Этот документ довольно прост, но полезно, тем не менее.

Надеюсь это поможет.

РЕДАКТИРОВАТЬ: О отдельной нити и открыть C. Насколько я знаю, открыть C - это просто плагин и глубоко в глубине всех реализаций все еще «нативные симбиан». Итак, насколько вы избегаете периодического опроса некоторых ресурсов, и просто используйте обычную блокировку IO, ваш код довольно экономичен на мощности как стандартные методы активных объектов Symbian (которые используют Symbian Semaphores для блокировки нити).

Другие советы

Я не сталкивался с чем-то особенным в Symbain, чтобы удержать устройство вне режима ожидания. В основном «лучшие практики» будут такими же, как все мобильные устройства:

  • Не в ожидании вещей, всегда используйте все никакие сигнальные услуги Avaialble на платформе, для Symbain ActiveObjects / User :: waitforxxxx
  • Ограничить количество фоновых потоков (в настоящее время все мобильные устройства по-прежнему только 1 процессор ...)
  • Не видите на системных службах, закройте их как можно скорее (это, как правило, моя главная батарея в моих мобильных приложениях, иногда пытается найти, какую системную службу приводит к тому, что большинство сливок аккумулятора может быть настоящей болью, Winmo очень плохой для этого).

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

Дайте вашему приложению низкий приоритет (см. RPROCESS и RTHREAD Классы). Ваш подход действительно будет зависеть от того, что делает ваше текущее приложение. Эти вещи потребляют большинство батареи: радио (GSM / 3G / WiFi / Bluetooth), подсветка экрана, доступ к файлу.

Symbian OS всегда старается придать вашему приложению спать, вам не нужно говорить об этом. Просто убедитесь, что ваш подход дает ему возможность поставить его спать.

Управление питанием является очень важным вопросом во время разработки приложения.

В Symbian это зависит от того, что вы используете для запуска фоновой деятельности.

Независимо от того, используете ли вы нить или управление ActiveX.

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

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

На самом деле это очень хорошая тема, которую вы столкнулись

Там раньше был таймер бездействия, который может быть сброшен приложением. Это предотвратит бы экран в любой режим заставки.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top