Si tu móvil se queda sin batería mucho antes de lo que debería y notas cosas raras como que la pantalla se enciende sola o el teléfono parece estar siempre «pensando», es muy probable que tengas un problema de wakelocks activos en segundo plano. No es brujería ni que tu móvil esté roto: son aplicaciones que están impidiendo que el sistema descanse cuando toca.
La buena noticia es que todo esto se puede investigar y ponerle remedio. A lo largo de este artículo vamos a ver qué son exactamente los wakelocks, cómo detectarlos en tu móvil y qué puedes hacer tanto si eres usuario normal como si eres desarrollador que quiere optimizar su app y evitar que Google Play la penalice por abusar de ellos.
¿Qué es un wakelock y por qué agota tu batería?
En Android, un wakelock es básicamente una orden que una aplicación le da al sistema para que no se duerma. Forma parte del servicio de gestión de energía del propio sistema operativo y su objetivo original es bueno: permitir que ciertas tareas sigan funcionando aunque apagues la pantalla o el dispositivo entre en modo de bajo consumo.
Cuando todo funciona como debe, el móvil entra periódicamente en deep sleep, el modo de ahorro máximo de batería. En ese estado la CPU apenas trabaja y la mayoría de procesos se paran o se limitan a despertar en momentos puntuales. El problema viene cuando alguna app usa mal sus privilegios de wakelock y mantiene la CPU o la pantalla despiertas durante mucho más tiempo del necesario.
Dentro de los wakelocks se distinguen dos grandes tipos con efectos diferentes en el consumo:
- Wakelock parcial (Partial Wakelock): mantiene la CPU encendida aunque la pantalla esté apagada. Sirve, por ejemplo, para que una app termine una descarga o procese datos en segundo plano sin que el sistema la mate.
- Wakelock completo o de pantalla (Full / Screen Wakelock): además de mantener activa la CPU, obliga a que la pantalla siga encendida o se encienda. Es mucho más agresivo en consumo, porque la pantalla es uno de los componentes que más batería traga.
Un caso típico de wakelock mal gestionado sería una app que, por un fallo de programación, deja la cámara o el procesador activos permanentemente aunque ya no estés usando la aplicación. Durante un tiempo fue famoso el ejemplo de Skype en algunos Nexus: la app mantenía procesos de cámara en segundo plano y la batería se desplomaba como si estuvieras grabando vídeo todo el rato.
Que una app pida un wakelock no es malo por sí mismo. De hecho, hay usos totalmente legítimos y beneficiosos para el usuario. Por ejemplo, YouTube mantiene la pantalla encendida mientras ves un vídeo para que no se apague en mitad de la reproducción. La clave está en que el desarrollador libere ese wakelock en cuanto ya no haga falta y que no mantenga despierto el dispositivo sin motivo.
Síntomas típicos de que tienes wakelocks problemáticos
Aunque no veas nada raro en primer plano, el comportamiento del teléfono suele delatar que alguna aplicación está abusando de wakelocks. Algunos signos claros son:
- La pantalla no se apaga cuando debería. Has configurado un tiempo de espera corto, pero el panel sigue encendido mucho más tiempo, sin que lo estés tocando.
- La pantalla se enciende sola. Sacas el móvil del bolsillo y lo encuentras con la pantalla encendida o incluso realizando alguna acción por sí mismo, como llamadas accidentales.
- Bajada de batería muy brusca en reposo. Dejas el móvil en la mesa, con la pantalla apagada, y al cabo de una hora ves una caída de batería desproporcionada.
- El dispositivo está caliente aun sin usarlo. La CPU sigue activa por culpa de un wakelock parcial y el teléfono genera más calor incluso con la pantalla apagada.
Estos comportamientos suelen deberse a aplicaciones que se quedan ejecutándose en segundo plano y fuerzan a la CPU o la pantalla a mantenerse despiertas. No necesariamente son apps maliciosas; muchas veces son simplemente apps mal programadas o que no respetan bien las políticas de ahorro de energía de las últimas versiones de Android.
¿Cómo detecta Android los wakelocks en las apps (Android vitals)?
Desde el punto de vista del desarrollador, Google ofrece herramientas para detectar si su app está siendo demasiado agresiva con los wakelocks. Una de las más importantes es Android vitals, integrada en Google Play Console, que recopila métricas de rendimiento y consumo de batería a partir de millones de dispositivos reales.
Android vitals considera que una app hace un uso excesivo de wakelocks parciales cuando la suma de todos los wakelocks no exentos ejecutados por la app alcanza 2 horas o más en un período de 24 horas en segundo plano o dentro de un servicio en primer plano. Es decir, si tu aplicación mantiene la CPU despierta demasiado tiempo cuando el usuario no la está usando activamente, la métrica salta.
Para no penalizar usos razonables, Android vitals excluye ciertos wakelocks generados por APIs iniciadas claramente por el usuario, como los relacionados con reproducción de audio, ubicación activa o tareas programadas a través de JobScheduler. El criterio es que exista un beneficio obvio para el usuario y que no haya una mejor forma de lograrlo sin wakelocks.
En la consola de desarrollador, el panel de wakelocks parciales excesivos muestra los nombres de los wakelocks que más problemas generan, el número de sesiones afectadas y la duración total. Si más del 5% de las sesiones de la app en los últimos 28 días presentan wakelocks parciales excesivos, esto puede terminar afectando a la visibilidad de la aplicación en Google Play.
Cuando una app recibe esta alerta, el siguiente paso lógico es localizar qué partes del código están adquiriendo esos wakelocks y corregir su uso: sustituirlos por APIs más modernas que gestionen el ciclo de vida por sí mismas, dejar de usarlos si no son imprescindibles o, como mínimo, asegurarse de liberarlos siempre a tiempo.
Buenas prácticas con wakelocks para desarrolladores
Para los desarrolladores de aplicaciones Android, la API clave aquí es PowerManager y sus bloqueos de activación parciales. Un wakelock parcial se adquiere normalmente llamando a
acquire() con la marca PARTIAL_WAKE_LOCK, o utilizando otras APIs que internamente hacen lo mismo.El problema aparece cuando la app olvida liberar ese wakelock con
release(), o lo mantiene activo más tiempo del estrictamente necesario. Eso impide que el dispositivo entre en estados de bajo consumo y se traduce en quejas de usuarios por batería, malas valoraciones en Google Play y, como hemos visto, métricas negativas en Android vitals.Algunas recomendaciones básicas para programar con wakelocks sin destrozar la autonomía del usuario son:
- No usarlos si existe una alternativa moderna. Muchas tareas que antes requerían wakelocks directos hoy se pueden resolver con WorkManager, JobScheduler, AlarmManager con restricciones, FCM, etc.
- Adquirir el wakelock lo más tarde posible y liberarlo lo antes posible. Nada de dejarlo agarrado durante todo el ciclo de vida de un servicio si solo lo necesitas para una operación puntual.
- Tener en cuenta el estado de la app. Si el usuario cierra sesión, cierra la actividad principal o desactiva ciertas funciones, no tiene sentido seguir manteniendo la CPU despierta.
- Monitorizar en dispositivos reales. Tras hacer cambios en el código, conviene verificar el comportamiento con herramientas locales de depuración de wakelocks y revisando periódicamente los informes de Android vitals.
En algunos casos verás wakelocks atribuidos a tu aplicación aunque tú no los hayas creado explícitamente. Suele deberse a APIs de alto nivel que, internamente, utilizan wakelocks para garantizar su funcionamiento. Entender qué componente está realmente detrás de esos bloqueos de activación te ayudará a decidir si conviene cambiar de API o revisar su configuración.
¿Cómo detectar wakelocks en tu móvil como usuario?
Si lo que quieres es, como usuario normal, encontrar qué apps están manteniendo despierto tu móvil, hoy tienes varias opciones. Android cada vez ofrece más información de batería y control de actividad en segundo plano directamente desde los ajustes del sistema, pero aún puedes ir un paso más allá con herramientas especializadas o con ADB.
Usar los ajustes de batería de Android
En las últimas versiones de Android, el primer sitio donde mirar es el menú de batería del sistema. Desde Ajustes → Batería puedes ver qué aplicaciones están consumiendo más batería y cuánto lo hacen en segundo plano. Aunque no muestre la palabra «wakelock», esos consumos anómalos en reposo suelen estar relacionados con bloqueos de activación.
También es posible restringir el uso en segundo plano de ciertas apps directamente desde ahí. De esta forma, el sistema les limita la actividad cuando no las estás usando, lo que reduce de forma indirecta el impacto de los wakelocks que puedan generar. Eso sí, restringir en exceso puede provocar que algunas apps dejen de sincronizar o envíen notificaciones con retraso.
Apps de monitorización de batería: GSam y BetterBatteryStats
Aunque muchas de las herramientas clásicas han desaparecido o se han quedado desactualizadas, todavía hay aplicaciones que muestran información avanzada de consumo y despertadores. Dos nombres bastante conocidos son GSam Battery Monitor y BetterBatteryStats.
GSam Monitor de Batería te permite ver, entre otras cosas, qué aplicaciones están despertando el dispositivo con más frecuencia y cómo se reparte el consumo entre CPU, pantalla, radio móvil, WiFi, etc. BetterBatteryStats, muy popular en la comunidad de XDA, ofrece vistas muy detalladas de wakelocks, «alarms» y otros eventos del sistema, siendo especialmente útil en dispositivos rooteados.
Gracias a estas herramientas puedes detectar, por ejemplo, que un servicio concreto de WhatsApp o Google Fotos está manteniendo la CPU despierta por tareas de copia de seguridad, sincronización o trabajos en cola. Esa información te permite luego tomar decisiones: cambiar la configuración de copia de seguridad, desactivar ciertas opciones o incluso buscar alternativas.
Comando ADB para ver wakelocks activos
Si no quieres depender de apps de terceros o prefieres un enfoque más técnico, puedes usar ADB desde tu ordenador. Tras instalar ADB y activar la depuración USB en tu móvil, puedes ejecutar un comando similar a este:
adb shell dumpsys power | findstr -i wake_lockEn sistemas Linux o macOS, en lugar de
findstr se suele usar grep para filtrar la salida. El resultado del comando mostrará los wakelocks que están actualmente activos en el dispositivo, con nombres que suelen corresponderse con servicios del sistema o de aplicaciones instaladas.En esa lista pueden aparecer elementos como DreamManagerService, SystemJobService de WhatsApp o servicios de Google Fotos relacionados con tareas en segundo plano. Aunque los nombres sean un poco crípticos, permiten identificar qué app está detrás del consumo y si tiene sentido que mantenga el dispositivo activo tanto tiempo.
Wakelock Detector: la app clásica para localizar wakelocks
Durante años, una de las opciones más populares para detectar wakelocks en Android fue Wakelock Detector, una aplicación enfocada precisamente a listar qué apps estaban manteniendo despierto el terminal y durante cuánto tiempo. Aunque hoy en día está descontinuada y no se mantiene actualizada para las últimas versiones de Android, sigue siendo interesante entender qué ofrecía, porque muchas ideas se han heredado en otras herramientas.
La app estaba pensada para usuarios que querían ver en detalle qué procesos hacían uso de wakelocks de CPU y de pantalla. Mostraba estadísticas de todos los wakelocks registrados desde el último arranque del dispositivo, agrupando los relacionados con una misma aplicación en una vista expandible para facilitar su lectura.
Entre sus funciones principales, destacaban:
- Estadísticas de wakelocks de CPU (Partial) y pantalla (Full), permitiendo alternar entre ambos tipos desde la parte superior de la interfaz.
- Ordenación por tiempo de wakelock, estado en ejecución o alfabéticamente, lo que ayudaba a encontrar las apps que más tiempo mantenían el dispositivo despierto.
- Marcado en rojo de las aplicaciones actualmente activas, para identificar de un vistazo qué estaba en marcha en ese momento.
- Visualización del porcentaje de tiempo que la CPU ha estado despierta o dormida desde el último ciclo de carga o reinicio.
Su uso recomendado era sencillo: se sugería cargar el teléfono por encima del 90% y desconectarlo o reiniciarlo, dejarlo funcionando normalmente durante una o dos horas, y luego abrir Wakelock Detector para revisar qué aplicaciones aparecían en las primeras posiciones por tiempo de wakelock. Esas eran, en muchos casos, las responsables de los drenajes de batería en reposo.
Uno de los puntos delicados de Wakelock Detector era que, a partir de Android KitKat, necesitaba acceso root para funcionar con todos los permisos necesarios, debido a cambios en la forma en que el sistema exponía las estadísticas de batería. Sus desarrolladores sacaron una versión LITE con un método alternativo sin root, basado en comandos ADB o incluso en una extensión de Chrome, pero requería seguir una guía de configuración previa.
La app llegó a tener bastante repercusión en la comunidad: fue analizada en XDA, HowToGeek, LifeHacker, DotTech y otras webs tecnológicas, y muchos usuarios la usaban como referencia para complementar la información básica de consumo que ofrece Android. A día de hoy, sin embargo, hay que tener en cuenta que está desactualizada y que sus desarrolladores ya no la mantienen, por lo que en móviles modernos puede dar información incompleta o ni siquiera funcionar.
Otras apps y métodos clásicos para controlar wakelocks
Además de Wakelock Detector, hubo y hay otras herramientas orientadas a controlar qué apps se ejecutan en segundo plano y cómo afectan a la batería. Una de las más conocidas fue Amplify, que permitía ajustar con bastante precisión el comportamiento de wakelocks y alarmas del sistema en dispositivos rooteados, aunque también se encuentra discontinuada.
Otra categoría de apps muy relacionada con este tema son las aplicaciones de ahorro de batería y gestión de procesos, como Greenify o SD Maid, que en dispositivos antiguos eran especialmente útiles para hibernar o congelar aplicaciones que no se podían desinstalar, sobre todo bloatware o apps preinstaladas. Al detener su actividad en segundo plano, reducían drásticamente la posibilidad de que generasen wakelocks continuos.
Dentro de este ecosistema, también apareció Wakelock Detector – Save Battery, una versión centrada en mostrar qué servicios o procesos estaban consumiendo más energía. Su enfoque era más sencillo: listaba los procesos del sistema y su consumo asociado, sobre todo por accesos frecuentes a Internet y actividad en segundo plano. De este modo, el usuario veía de inmediato si Gmail, WhatsApp u otra app estaban demasiado «pesadas» y podía decidir cerrarlas temporalmente si sabía que no iba a necesitarlas.
En estos casos, la filosofía de la herramienta era clara: mostrar la información y dejar al usuario decidir qué hacer, ya fuera forzar la detención de una aplicación, restringir su sincronización o directamente desinstalarla si no era imprescindible.
¿Qué hacer si detectas wakelocks que drenan tu batería?
Una vez has identificado que ciertas apps son las responsables de mantener despierto tu móvil, toca tomar decisiones. La solución más efectiva suele ser también la más sencilla: desinstalar o desactivar las aplicaciones problemáticas, siempre que no sean imprescindibles para tu día a día.
Si no puedes o no quieres desinstalarlas, puedes recurrir a las opciones que ofrece Android desde Ajustes → Aplicaciones → . Allí tendrás la posibilidad de restringir su actividad en segundo plano, quitarle permisos que no necesita o impedir que se inicie automáticamente. Estas medidas suelen ser suficientes para domar el comportamiento de muchas apps sin tener que borrarlas.
En dispositivos más antiguos o con capas de personalización agresivas, puede ser interesante utilizar herramientas como Greenify para hibernar apps que apenas usas pero que se despiertan constantemente. En algunos casos avanzados, y siempre con mucho cuidado, se pueden congelar aplicaciones de sistema que se sabe con certeza que no son necesarias, aunque esto ya entra en terreno de usuarios con root y conocimientos más técnicos.
Eso sí, conviene tener presente que restringir en exceso la actividad de apps de mensajería, correo o servicios de copia de seguridad puede provocar que dejen de recibir notificaciones a tiempo, pierdas sincronizaciones automáticas o se retrasen ciertas tareas. Se trata de encontrar un equilibrio razonable entre autonomía y funcionalidad.
Al final, entender qué son los wakelocks y cómo se comportan tus apps te da un control mucho mayor sobre la batería de tu móvil. Identificando las aplicaciones que abusan de mantener despierta la CPU o la pantalla, ajustando su configuración, limitando su actividad en segundo plano o sustituyéndolas por alternativas mejor optimizadas, puedes alargar claramente la autonomía diaria de tu dispositivo y evitar esos drenajes misteriosos que tanto desesperan.
Continúar leyendo...