intive Argentina Blog

Google I/O 2016: Optimización de memoria y batería en Android

Chats, juegos, mensajes, mails, Facebook, Instagram, Twitter, Happn, Tinder. Hace tiempo ya que nuestros celulares son mucho más que teléfonos y, difícilmente, salgamos de casa sin un cargador de batería encima. Justamente, por todo lo que hacemos, una carga -muchas veces- no suele alcanzar para toda la jornada. Pero, más allá de que tenemos que cargar los dispositivos, ¿qué sabemos sobre la optimización deluso de la batería en sistemas Android?

La mayor parte de la batería se consume cuando el device está encendido por el brillo de su pantalla. Cuando la pantalla se encuentra apagada, lo que más batería consume es el uso de la CPU (Unidad Central de Procesamiento) y la radio. La CPU es utilizada por los procesos que corren en background y la radio se emplea cuando se quiere enviar o recibir información de la red.

Para entender un poco más sobre el funcionamiento de la radio, les dejamos el siguiente esquema:

2

En el esquema podemos ver representada con unos rayitos, la cantidad de energía que se consume de acuerdo al estado en que se encuentre la radio. Cuando la radio está idle (en mode standby), consume poco. Cuando el device comienza a transmitir, se produce una latencia de dos segundos para encenderse a potencia completa. Es en ese estado cuando se da el mayor consumo de energía. Al dejar de transmitir y recibir, la radio queda durante cinco segundos en un modo de bajo consumo que le permite tener menor latencia en el caso de volver a utilizarse. Si permanece inactiva por doce segundos, vuelve a colocarse en modo standby.

3

Es importante, entonces, resaltar en este punto los tres principios de diseño para mejorar el uso de la batería. Los detallamos a continuación:

  1. Reducir toda la actividad que nuestra app esté realizando en background.
  2. En caso de que no podamos hacer lo anterior, reducir toda la actividad cuando el dispositivo esté cargándose.
  3. Si tampoco podemos cumplir el punto 2, realizar las conexiones junto con otras apps para evitar despertar la radio.

4

Para realizar dicha conexión, Marshmallow introdujo una funcionalidad llamada Doze. Luego de un período de inactividad en el que se apaga la pantalla (5 minutos), Doze desactiva toda la actividad en background, el acceso a la red y los trabajos y las alarmas son pospuestas. También desactiva el GPS y WiFi.

Doze habilita unas ventanas de trabajo donde todas estas actividades pospuestas se realizan en conjunto y la radio se activa una sola vez.5Con el release de Android N, dentro de la primera ventana de cinco minutos, los wakelocks, alarmas, GPS y WiFi permanecen habilitados.

6

A partir de la API 21 se encuentra disponible la clase JobScheduler, que nos permite realizar las conexiones en ese time window o, de acuerdo al tipo de red en la que estemos conectados (wifi consume menos que la red celular), si el dispositivo está cargando y si se está siendo utilizado.

7

8

En el caso de API menores a 21 y dispositivos iOS existe una API GCM JobDispatcher, ahora llamada Firebase JobDispatcher.

Después de esta introducción, esperamos haber clarificado algunas dudas sobre la optimización de sus aplicaciones y la mejora en el uso de la batería del celular.

Diego Pappalardo

Diego Pappalardo desarrolla aplicaciones Android para la compañía desde septiembre de 2015. También es Team Leader de la brigada Android, en la que coordina el desarrollo de investigaciones y escritura de artículos. Se recibió en 2009 en la Universidad Tecnológica Nacional de ingeniero electrónico. Además de ser un rockstar con Android, Diego conoce mucho de  Java, Git, dispositivos móviles y  desarrollo de software en general.

Deja un comentario