Pregunta

¿Hay algún "mejores prácticas" para escribir un de fondo aplicaciones de bajo consumo en Symbian?

En concreto, ¿hay alguna manera (es decir API) para una aplicación Symbian para insinuar el sistema operativo con respecto a su estado actual con el fin de reducir el consumo de batería? En Android, por ejemplo, existe la noción de Wake Cerraduras , que evita que el dispositivo entre en modo de espera - ¿Hay algo similar en Symbian

EDIT:
¿Hay consecuencias cuando se ejecuta código como un hilo separado con la biblioteca abierta-C, y no como "nativo" Symbian C ++, usando Activo etc.? (El código abierto-C es el bloqueo de IO mayor parte del tiempo).

¿Fue útil?

Solución

  1. Puede comprobar la actividad del usuario (in) con un método RTimer :: La inactividad (). De esta manera se describe en Forum Nokia Wiki página . Hay También se describe cómo se puede restablecer temporizador de inactividad.
  2. Puede comprobar si la pantalla del dispositivo está encendido o apagado usando API HAL. Ver clases HAL y HALData. Es posible utilizar dicha una llamada:

TInt displayState; HAL::Get(HALData::EDisplayState, displayState); Y el displayState llevará a cabo ya sea 0 si la pantalla está apagada o 1 en otro caso.

Con estas API usted sabrá si el usuario está activo ahora, por lo que será capaz de cambiar el comportamiento de su servicio en segundo plano para reducir su consumo de energía.

También puede utilizar aplicación Nokia Energy Profiler para el consumo de energía récord de teléfono, con diferentes opciones de ahorro de energía de su servicio en segundo plano. También consulte de Nokia documento que describe las mejores prácticas para ahorrar energía del dispositivo. Este documento es bastante sencillo, pero útil, no obstante.

Espero que esto ayude.

EDIT: Acerca de hilo separado y Open C. Por lo que yo sé, Open C es sólo un plugin y en el fondo todas las implementaciones son todavía "Symbian nativo". Así, en lo que a evitar el sondeo periódico de algún recurso y sólo tiene que utilizar el bloqueo habitual IO, su código es bastante económico misma en el poder como técnicas estándar Symbian Activo Objetos (que utilizan Symbian semáforos específicos para las discusiones de bloque).

Otros consejos

No he encontrado nada en especial Symbain para mantener el dispositivo de stand-by. Básicamente las "mejores prácticas" serían los mismos que todos los dispositivos móviles:

  • No bucle de espera para las cosas, utilizar siempre que sea avaialble servicios de señalización en la plataforma, por Symbain ActiveObjects / usuario :: WaitForXxx
  • Limite el número de subprocesos de fondo (en la actualidad todos los dispositivos móviles son todavía sólo 1 CPU ...)
  • No cuelgue en los servicios del sistema, cerrarlos lo antes posible (esto es normalmente mi drenaje principal de la batería en mis aplicaciones móviles, a veces tratando de encontrar lo que hace que el servicio del sistema de drenaje de la mayor parte de la batería puede ser un verdadero dolor de cabeza, WinMo es muy malo para esto).

Para mí, me parece que en su mayoría se reduce a un compromiso entre la duración de la batería y el rendimiento / capacidad de respuesta de la aplicación. Desafortunadamente poder que siempre parecen lado con el / lado la capacidad de respuesta y el rendimiento condenar la descarga de la batería .....

Dar una baja prioridad de la aplicación (ver clases RProcess y RThread). Su enfoque realmente depende de lo que hace su aplicación en segundo plano. Estas cosas consumen la mayor parte de la batería:. De radio (GSM / 3G / Wi-Fi / Bluetooth), retroiluminación de la pantalla, los accesos de archivos

Symbian OS siempre tratará de poner su aplicación en el sueño, que no es necesario decir que para hacer esto. Sólo asegúrese de que su enfoque le da la oportunidad de ponerlo a dormir.

La gestión de energía es un tema muy importante, mientras que el desarrollo de la mayoría de aplicaciones.

En Symbian depende de lo que está utilizando para ejecutar actividades en segundo plano.

Si usted está utilizando hilo o el control ActiveX.

Para, por ejemplo. está desarrollando navegador de la aplicación que desea que el navegador para descargar algo, entonces que la descarga de la actividad debe ir en el fondo y de actividad capaces inicia y cuándo mostrar el progreso y cuando termina se debería volver a venir a extremo delantero.

Depende de cómo se está gestionando hilo si está utilizando hilo. Usted puede hacer como por cuál de ellos para hacer una pausa cuando el largo tiempo la actividad de aceptación se inicia y cuándo reanudará cuando la actividad de fondo tiene acabados de ejecución ..

De hecho, este es el muy buen tema u han encontrado

No solía ser un temporizador de inactividad que podría restablecerse por la aplicación. Esto evitaría que la pantalla de entrar en cualquier modo de protector de pantalla.

Si se utiliza la función de varios asíncrona en Symbian, su aplicación se ejecutará cuando sea apropiado.

Uno de estos métodos debe trabajar en función de sus necesidades. Si usted describe lo que quiere lograr con más detalle que sería más fácil para ayudarle.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top