-
Title:
05-09 Network_and_Battery_Drain
-
Description:
05-09 Network_and_Battery_Drain
-
Dediquemos un momento
a algo muy evidente.
-
En consumo de batería,
-
las redes de contactos son los peores
y más grandes culpables que hay.
-
Recuerda que dentro de tu teléfono
hay una pequeña pieza de hardware,
-
una radio HAM,
cuyo único objetivo
-
es comunicarse con las torres de telefonía
-
y transmitirles información
a altos volúmenes.
-
Pero la clave está en que este chip
no siempre está activo.
-
Al enviar un paquete de datos,
-
el chip con radiofrecuencia
estará activo durante un tiempo,
-
en caso de que haya
una respuesta del servidor.
-
Si no hay actividad, el hardware
se desactivará para ahorrar batería.
-
Como hemos visto,
-
hay muchísima batería la primera vez
que se activa el chip,
-
y mientras se mantenga activo
esperando una respuesta
-
la batería se irá consumiendo.
-
Cabe señalar que hay dos formas básicas
-
en las que la mayoría de aplicaciones
interactúan con la radio.
-
En primer lugar,
hay hechos que deben ser inmediatos.
-
Son el resultado de la acción del usuario,
-
o surgen de la necesidad
de actualizar la UI de tu aplicación.
-
Imagina que un usuario pide cargar
unos tuits para una "trending hashtag".
-
Como es una acción
iniciada por un usuario,
-
tu aplicación debería
responder al momento.
-
Por otro lado,
hay tareas de redes sociales
-
que no tienen por qué ocurrir
de una forma tan puntual, por ejemplo:
-
subir datos de usuario,
sincronizar información estadística
-
o reajustar el tamaño de tus fotos.
-
Mientras se producen las primeras tareas,
que deben realizarse al momento
-
para proporcionar feedback al usuario,
las siguientes pueden dejarse para luego,
-
para que se realicen
de un modo más eficiente para la batería.
-
Hay una gran posibilidad de que la mayoría
de solicitudes de red en tu aplicación
-
caigan a esta segunda categoría.
-
Hacer más eficientes
las tareas de redes sociales
-
es un proceso de dos pasos.
-
Echa un ojo a la línea "mobile_radio"
de la herramienta "Battery Historian"
-
de tu aplicación.
-
Cada barra roja de aquí representa
una radiotransmisión móvil activa.
-
Los huecos entre las barras representan
la inactividad de la radio.
-
Ver muchas barras estrechas
y huecos en tu gráfico
-
apunta a problemas de rendimiento,
-
porque representa que te mueves
entre muchos ciclos activos e inactivos.
-
Lo que te interesa es ver huecos grandes
junto a grandes bloques de actividad.
-
Así reduces gastos minimizando
el número de solicitudes de red
-
y, lo que es mejor,
no utilizas del todo la radio.
-
Puedes esperar
a que el teléfono se conecte al WiFi
-
y dejar que el hardware WiFi
haga ese trabajo
-
con mucha menos consumo de batería.
-
Pero escribir el código para agrupar,
-
almacenar y aplazar
todas las solicitudes de red es difícil.
-
Por eso hemos hecho el trabajo por ti.
-
La API JobScheduler que se dio a conocer
con el lanzamiento de Android
-
proporciona una serie de APIs
-
que hacen todo el trabajo
de administración de solicitudes de red
-
y más por ti.
-
Pero en lugar de hablarte
de esta maravillosa API,
-
¿por qué no la entrenas
a base de práctica?