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?
Muy buena info, voy a ver estas apps. Gracias.
wooow super interesante!! :D
tendrias que dar informacion sobre los wakelocks mas habituales tipo alarmmanager y por el estilo que aunque no son de app, al menos en mi caso, consumen mucha bateria
Muchísimas gracias. Es interesantísimo. ¿Existen aplicaciones como estas en las que no haga falta rootear el teléfono?
Rootear el telefono es facil, y tambien volver a la condicion anterior. Vale la pena hacerlo y tener las virtudes de ésta y otras aplicaciones que nos sacan porquerias del celular ;-) .
Sii greenify puedes usarlo con o sin root.
¡Pregunto!
¿Greenify no ayudaría a solventar este problema?
Pues Greenify hiberna apps y es muy buena, supongo que lo ideal sería un bloqueador de wakelocks.
¿Hay forma de poner una app en una lista negra de Greenify y evitar que hiberne, sin desactivar el auto hibernado? En concreto hablo de un emulador de SNES, estoy jugando Chrono Trigger y cada vez que apago la pantalla, tengo que volver a abrir el emulador.
Si, yo tengo una app sin hibernar que es de notificaciones, lo unico que tienes que hacer es dar al mas y hacer que se muestren todas las app de tu movil, seleccionar todss las que quieras que se hibernen y dejar sin seleccionar aquella que no. Cuando lo automatices te saldra un mensaje en la parte de debajo de tu pantalla que pondra algo asi como Not hibern.. y la app.
Espero haberte ayudado y que me hayas entendido sobre todo jajaja :)
Wakelock detector no funciona en KitKat; existe algun otro app que haga las mismas funciones sin necesidad de ser root???
Better Batery Stats es mas efectiva en mi opinion y a mi me ayudo como respaldo para presentarle una queja formal a mi operador, ya que hicieron cambios en la red y tenia un wakelock permanentemente activo que provocaba que siempre estuviese activa localizando la red, luego se pudo resolver el asunto. los wakelocks activos que eran por el proveedor GPSD y L2_hsic
La Mejor Apk este tipo se llama Greenify y después están las otras, hiberna cualquier apk, instalada o del sistema automáticamente o ya sea manual si uno quiere con un widget, lo mejor es si pagas la versión de donación, se puede agregar la mejor función que la diferencia de las otras y es poder recibir notificaciones de esa apk estando hibernada.. pero el problema es que solo funciona en 4.1+
Greenfy no es solución en este tipo de problemas. En mi caso, soy poseedor de un Xperia Zl y hay dos wackelocks que me estaban drenando la batería, uno era el del Google Service, el cual no es realmente del service, sino del Google Serch, dejaba despierta la app de location consumiendo toda la bateria en minutos. Lo solucione gracias a un modulo de Xposed Wackelock terminator, pero como es la versión gratuita solo me deja reservar privilegios para una sola app. Aun no he podido arreglar un wackelock del kernel, Powermanagerservice, y este me esta drenando bateria, no como el de services que me dejaba sin batería en cuestión de una hora, sin embargo, aún así, el movil no me llega a la noche sin trastearlo mucho. Igual, todas estas soluciones son en caso root…..
Chicos, pregunta.
Yo uso Paranoid Android, por lo que desconozco si es una opción de la rom o si esta en todas las ROM´s basadas en Cyanogen, pero en los permisos de las aplicaciones uno puede elegir cuál tiene permitido mantener el teléfono «despierto». ¿Esa no es una forma nativa de evitar el drenaje de la batería?
Hay aplicaciones root para quitar permisos a las apps… miralo si eres root :)
Greenify se integra en Wakelock Detector, al seleccionar un proceso como vemos en la captura del artículo donde aparece facebook a la derecha del todo se añade la opción de greenify.
Wakelock es un detector nada más, muestra usos y estadísticas.