Reducir el impacto de la batería de las aplicaciones que descargan contenido a través de un teléfono inteligente radio


Si estoy creando una aplicación para teléfonos inteligentes que descarga regularmente datos de un servidor y también carga datos intermitentemente (análisis, anuncios, etc.) ¿qué puedo hacer para minimizar el impacto de la duración de la batería de esas transferencias?

El impacto de la batería de las transferencias utilizando la radio inalámbrica (2G, 3G, LTE, etc.) es particularmente significativo. ¿Hay algo sobre el perfil de uso de energía de la radio inalámbrica que debería afectar mis elecciones de cuándo, qué y cómo transferir datos para minimizar su ¿impacto en la duración de la batería?

Author: Reto Meier, 2012-03-31

2 answers

Esta respuesta se resume en la clase de entrenamiento de Android, Transferir Datos Sin Agotar la Batería que explica cómo minimizar el impacto de las descargas en la duración de la batería y conexiones de red, particularmente en relación con radio inalámbrica.

En particular Optimizando las Descargas para un Acceso Eficiente a la Red explica la máquina de estado de radio inalámbrica con cierto detalle y continúa para explicar cómo debería ser el modelo de conectividad de tu app interactuar con él para minimizar el consumo de batería relacionado.

La máquina de estado de radio inalámbrica

Referencia

Cada vez que cree una nueva conexión de red, la radio pasará al estado de potencia completa. Esta transición generalmente toma alrededor de 2 segundos, por lo que para minimizar la latencia, la radio introduce un retraso para posponer la transición a estados de energía más bajos.

Un radio 3G típico permanecerá a plena potencia durante 5 segundos después de completar su transferencia, antes de esperar otros 12 segundos en el estado de baja energía antes de pasar al modo de espera. En total, la radio consumirá energía durante casi 20 segundos cada vez que realice una conexión.

Este enfoque puede llevar a ineficiencias para aplicaciones que se ejecutan en OSS de teléfonos inteligentes modernos, donde las aplicaciones se ejecutan tanto en primer plano (donde la latencia es importante) como en segundo plano (donde se debe priorizar la duración de la batería).

Soluciones

La clave para minimizar el efecto de las descargas en la batería es reconocer que la frecuencia de las transferencias tiene un impacto más dramático que el tamaño de las descargas. En términos prácticos, prefetching y cola / agrupación de sus transferencias son particularmente eficaces.

Sabiendo que cada vez que inicias una conexión puedes causar que la radio consuma energía durante casi 20 segundos, es importante agrupar tus transferencias de datos para que sean transferencias de cambio de fase efectivas que se deben a se producen dentro de una ventana de tiempo similar para que esté transfiriendo tantos datos como sea posible durante cada sesión de transferencia para minimizar el número de sesiones.

Del mismo modo, la prefetching le permite descargar todos los datos que es probable que necesite para un período de tiempo determinado en una sola ráfaga, a través de una sola conexión, a plena capacidad. Al cargar por adelantado sus transferencias, reduce el número de activaciones de radio necesarias para descargar los datos, conservando la vida útil de la batería, mejorando la latencia, reduciendo ancho de banda, y la reducción de los tiempos de descarga.

Sin embargo, la prefetching también introduce el riesgo de aumentar el consumo de batería y el uso de ancho de banda al descargar datos que no se utilizan.

La agresividad con la que prefetch depende del tamaño de los datos que se descargan y la probabilidad de que se use. En términos generales, es una buena práctica para prefetch datos de tal manera que solo tendrá que iniciar otra descarga cada 2 a 5 minutos, y en el orden de 1 a 5 megabytes.

Es también es generalmente más eficiente reutilizar las conexiones de red existentes en lugar de crear otras nuevas. La reutilización de conexiones también permite que la red reaccione de manera más inteligente a la congestión y a los problemas de datos de red relacionados.

 79
Author: Reto Meier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-30 21:03:25

Te recomiendo que agregues una preferencia de "Con qué frecuencia sincronizar" a la configuración de tu aplicación so para que el usuario tenga algo que decir sobre cómo equilibrar la frescura de los datos frente al uso de la batería. Diferentes usuarios tienen diferentes prioridades.

 11
Author: bjnord,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-03 18:10:17