Nuestro dispositivo Android, en su interior, es más complejo de lo que nosotros podamos imaginar. El sistema operativo funciona como un reloj suizo con miles de engranajes que mantienen todos los procesos necesarios funcionando para que nuestra experiencia de usuario no se vea afectada y además, sea la más plena posible.

Uno de los «engranajes» de los que hablaremos hoy son de los procesos que funcionan en segundo plano manteniendo la CPU activa. Esto dentro del mundo del desarrollo y de un modo más técnico se llama «wakelock«. Del nombre podemos saber de qué se trata, wake-lock/mantener-despierto.

Son aplicaciones que se quedan abiertas en segundo plano y que fuerzan al dispositivo a funcionar incluso cuando tenemos la pantalla bloqueada o no estamos usando el dispositivo. No hay que relacionarlo con la sincronización de las cuentas ya que estas utilizan unos métodos diferentes a los procesos de los que vamos a hablar.

Un ejemplo claro y para que entendáis del todo de qué se trata un «wakelock» era el caso de drenaje masivo de batería de la cámara en algunos Nexus. Al poco tiempo se supo que se trataba de la aplicación de Skype que dejaba funcionando los procesos de la cámara y aunque no estuviera ésta funcionando, consumía como si lo estuviese.

Dentro de los wakelocks podemos encontrarnos con dos tipos: parciales o totales. Los primeros son los que mantienen la CPU activa para que la aplicación en sí siga recopilando datos o funcionando incluso con el dispositivo bloqueado. Mientras que los wakelocks totales son los que además de mantener la CPU activa, tienen despierta la pantalla.

Un wakelock «benigno» podría ser YouTube que nos mantiene activa la pantalla sin tener que tocarla, mientras que existen otras aplicaciones que hacen uso de esto para otro tipo de funciones. ¿Cuántas veces no hemos sacado el móvil del bolsillo y nos encontramos con que ha llamado a alguien o está abierta una aplicación?, esto es porque alguna aplicación hizo uso del wakelock total y encendió la pantalla.

Cómo detectar los wakelocks

La scene de Android supo de esta función del sistema operativo y pensó en los efectos nocivos que podría, como aplicaciones de spyware que funcionen en segundo plano para ir obteniendo información personal. Es por esto que existen aplicaciones para detectar estos wakelocks y poder eliminar/bloquear las aplicaciones que hacen uso de esto.

La que recomendaremos hoy es una de la que ya hablamos hace un tiempo, Wakelock Detector. Esta aplicación para Android, la cual necesita permisos ROOT, te mostrará el uso de la CPU y batería de cada aplicación. Permitiéndote así saber qué aplicación es la que te está quitando tiempo de batería.

Como podréis ver una vez instalada, se nos muestran las aplicaciones instaladas que están ejecutándose o se han ejecutado activando la CPU. Además, arriba, podremos ver el porcentaje de tiempo que ha estado despierta la CPU y el tiempo que ha estado dormido completamente. No más sustos con bajones bruscos de batería.

Gracias a esta aplicación podremos ver qué aplicación es la que no nos deja llegar al final del día y desinstalarla hasta que se corrija el fallo que hace que se mantenga despierta usando algún recurso del dispositivo por error.

También os dejo con otra aplicación con la misma finalidad llamada BetterBatteryStats. Ha sido desarrollada en el corazón de XDA y su objetivo es encontrar esa aplicación que hace que nuestra batería se funda en pocas horas.

com.asksven.betterbatterystats/app]

Según el changelog de Android 4.4.3, se corrigen ciertos wakelocks parciales. Por lo que si sois poseedores de un Nexus, estáis de enhorabuena, porque se optimizará un poco el consumo de batería del dispositivo.

¿Habéis tenido algún percance con un wakelock en alguna aplicación que hayáis instalado?