Identificar apps que despiertan el procesador (wakelocks) en Android

  • Los wakelocks son órdenes que mantienen despiertos CPU y pantalla, y su mal uso provoca drenajes fuertes de batería.
  • Android vitals controla el abuso de wakelocks en las apps y puede penalizar su visibilidad en Google Play.
  • Como usuario puedes detectar wakelocks desde los ajustes de batería, con apps especializadas o usando comandos ADB.
  • La solución pasa por desinstalar o limitar las apps problemáticas y, en casos avanzados, usar herramientas como Greenify o módulos específicos.

Mejores apps para ver información del hardware en Android

Si tu móvil Android pierde batería a toda velocidad incluso sin usarlo, se calienta en el bolsillo o la pantalla se enciende sola de vez en cuando, casi seguro que tienes algún problema de wakelocks. No es magia negra ni que la batería esté estropeada: son aplicaciones que mantienen despierto el procesador o la pantalla cuando el sistema debería estar descansando en modo profundo.

La parte positiva es que todo este comportamiento se puede analizar, entender y reducir bastante. A lo largo del artículo vas a ver qué son los wakelocks, qué tipos existen, cómo los trata Google desde el lado de los desarrolladores, qué herramientas puedes usar como usuario para identificarlos (GSam, BetterBatteryStats, comandos ADB, etc.), cómo funcionaban clásicos como Wakelock Detector y qué pasos concretos puedes seguir para frenar el drenaje de batería.

Qué es un wakelock en Android y por qué afecta tanto a la batería

En Android, un wakelock es básicamente una orden que una app le da al sistema para que no se duerma. Forma parte del servicio de gestión de energía y se creó con buena intención: permitir que ciertas tareas sigan funcionando aunque apagues la pantalla o el teléfono entre en reposo.

El estado favorito del sistema es el llamado deep sleep o sueño profundo, cuando la pantalla está apagada y la CPU apenas hace nada. Ahí es donde se logra el máximo ahorro de batería. El problema llega cuando una aplicación usa los wakelocks de forma descuidada y mantiene la CPU o la pantalla activas durante mucho más tiempo del necesario.

De forma muy simplificada, los wakelocks se dividen en dos grandes familias que afectan distinto a la autonomía:

  • Wakelock parcial (Partial Wakelock): mantiene la CPU encendida aunque la pantalla esté apagada. Se usa, por ejemplo, para acabar una descarga, procesar datos en segundo plano o sincronizar información sin que el sistema mate el proceso.
  • Wakelock completo o de pantalla (Full / Screen Wakelock): además de mantener la CPU activa, obliga a que la pantalla siga encendida o se encienda. Es mucho más agresivo porque la pantalla es uno de los componentes que más batería gasta.

Un caso clásico de wakelock mal gestionado fue el de Skype en algunos Nexus: la aplicación dejaba procesos de cámara activos en segundo plano y el consumo de batería se disparaba como si estuvieras grabando vídeo permanentemente, aunque no tocaras el móvil.

Que una app pida un wakelock no es malo por sí mismo; de hecho, muchas funciones dependen de ello. Mientras ves un vídeo, por ejemplo, YouTube mantiene la pantalla encendida para que no se apague en mitad de la reproducción. El problema viene cuando el desarrollador no libera el wakelock a tiempo o lo mantiene sin que haya un beneficio claro para el usuario.

Síntomas de que tienes wakelocks causando drenaje de batería

El teléfono suele dar pistas bastante claras cuando algo está manteniendo despierto al sistema de más. Algunos comportamientos típicos ligados a wakelocks problemáticos son:

  • La pantalla tarda mucho en apagarse a pesar de tener configurado un tiempo de espera corto. No estás tocando el móvil y aun así el panel se queda encendido.
  • El móvil enciende la pantalla por su cuenta. Lo sacas del bolsillo y te lo encuentras con la pantalla activa o incluso con alguna app abierta o una llamada marcada sin querer.
  • Pérdida de batería muy fuerte en reposo. Dejas el teléfono sobre la mesa una hora con la pantalla apagada y al mirarlo ves un descenso de batería que no tiene sentido.
  • El dispositivo está caliente aunque no lo uses. La CPU sigue trabajando por culpa de un wakelock parcial y genera calor incluso con el panel apagado.

Este tipo de síntomas suelen venir de aplicaciones que se quedan corriendo en segundo plano y fuerzan a la CPU o la pantalla a mantenerse activas. No tienen por qué ser apps maliciosas; muchas veces son apps mal programadas, configuraciones exageradas (por ejemplo, copias de seguridad constantes) o servicios de Google que se despiertan con demasiada frecuencia.

Cómo trata Google los wakelocks: Android vitals y penalizaciones

Desde el punto de vista de los desarrolladores, Google analiza el uso de wakelocks a través de Android vitals, el panel de rendimiento de Google Play Console. Este sistema recoge datos anónimos de millones de dispositivos reales para detectar apps que se pasan de la raya en consumo.

identificar wakelocks android

Android vitals considera que una app hace uso excesivo de wakelocks parciales cuando la suma de todos los wakelocks no exentos de la aplicación llega a unas 2 horas o más en un periodo de 24 horas mientras está en segundo plano o en un servicio en primer plano. Es decir, si tu app mantiene el procesador despierto demasiado tiempo cuando el usuario no la está usando directamente, te cae aviso.

Para ser justos, Google excluye ciertos wakelocks ligados a acciones claramente iniciadas por el usuario, como reproducción de audio, uso activo de ubicación o tareas programadas con JobScheduler. La idea es no penalizar funciones razonables para las que no hay una alternativa mejor.

En la consola de desarrollador, el panel de wakelocks excesivos muestra qué nombres de wakelock dan más problemas, cuánto duran y en qué porcentaje de sesiones aparecen. Si más de alrededor de un 5 % de las sesiones de la app en los últimos 28 días tienen wakelocks parciales en exceso, la visibilidad de la aplicación en Google Play puede verse afecta.

En cuanto una app recibe esta señal de alarma, toca revisar el código que adquiere esos wakelocks y corregir su uso: cambiar a APIs más modernas que gestionen el ciclo de vida por sí mismas, dejar de usarlos si no son imprescindibles o asegurarse de que siempre se liberan en el momento adecuado.

Buenas prácticas con wakelocks para desarrolladores Android

La API clave para gestionar wakelocks en Android es PowerManager y sus bloqueos parciales. Un wakelock parcial suele adquirirse llamando a acquire() con la marca PARTIAL_WAKE_LOCK o utilizando APIs de más alto nivel que internamente hacen exactamente lo mismo.

El gran enemigo de la batería es cuando la app olvida liberar el wakelock con release() o lo mantiene mucho más tiempo del estrictamente necesario. Eso impide que el dispositivo entre en sus estados de reposo y acaba en quejas, valoraciones bajas y métricas rojas en Android vitals.

Algunas recomendaciones básicas para no destrozar la autonomía de tus usuarios son:

  • Evitar wakelocks directos si hay alternativa moderna. Muchas tareas que antes exigían wakelocks hoy se resuelven con WorkManager, JobScheduler, AlarmManager con restricciones, FCM, etc.
  • Adquirir el wakelock lo más tarde posible y soltarlo nada más terminar. No tiene sentido mantenerlo 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 y del usuario. Si el usuario cierra sesión, cierra la actividad principal o desactiva una función, no hay razón para seguir manteniendo la CPU despierta.
  • Probar en dispositivos reales y revisar Android vitals periódicamente. Tras cambiar código, conviene monitorizar el comportamiento de wakelocks y no fiarse solo del emulador.

En bastantes casos verás wakelocks atribuidos a tu paquete aunque tú no los pidas explícitamente. Suele deberse a APIs de alto nivel que internamente usan wakelocks para garantizar funcionamiento (reproducción multimedia, descargas, localización, etc.). Entender qué componente está detrás de cada nombre de wakelock ayuda a decidir si cambiar de API o ajustar su configuración.

Cómo detectar wakelocks en tu móvil si eres usuario

Mejores apps para ver información del hardware en Android

Si lo que quieres es, como usuario de a pie, descubrir qué apps despiertan tu móvil y se comen la batería, tienes varias vías. Android ha mejorado muchísimo la información de batería en los ajustes, pero todavía puedes ir un paso más allá con herramientas específicas o tirando de ADB.

Revisar primero el menú de batería del sistema

En las versiones recientes de Android, el primer sitio donde mirar es Ajustes → Batería. Ahí puedes ver qué apps consumen más energía y cuánto lo hacen en segundo plano. Aunque no salga la palabra wakelock por ninguna parte, un consumo desproporcionado con la pantalla apagada huele a bloqueo de activación.

Desde ese mismo menú, en muchos móviles puedes restringir el uso en segundo plano de apps concretas. El sistema les corta bastante la libertad cuando no las estás usando, lo que reduce de forma indirecta el impacto de los wakelocks que generan. Ojo, si te pasas restringiendo es fácil que las notificaciones lleguen tarde o se pierdan sincronizaciones de correo, copias de seguridad o mensajería.

Apps de monitorización: GSam Battery Monitor y BetterBatteryStats

Aunque muchas herramientas antiguas han ido desapareciendo, siguen existiendo aplicaciones que muestran información muy detallada de consumo y despertares. Dos de las más conocidas son GSam Battery Monitor y BetterBatteryStats.

GSam te permite consultar qué apps están despertando el dispositivo con mayor frecuencia y qué porcentaje de batería gasta cada componente (CPU, pantalla, radio móvil, WiFi, etc.). BetterBatteryStats, muy popular en XDA, ofrece vistas centradas en wakelocks, alarmas y otros eventos del sistema, sacándole especial partido a los dispositivos con root.

Con este tipo de apps puedes detectar, por ejemplo, que un servicio concreto de WhatsApp o de Google Fotos mantiene la CPU activada para subir copias de seguridad o procesar tareas en cola. Con esa pista ya puedes plantearte cambiar la configuración de copia de seguridad, desactivar funciones concretas o buscar alternativas más ligeras.

Ver los wakelocks activos con ADB

Si prefieres un enfoque más técnico o no quieres instalar apps de terceros, siempre queda tirar de ADB desde un ordenador. Tras instalar ADB y activar la depuración USB en tu Android, puedes lanzar un comando como este:

adb shell dumpsys power | findstr -i wake_lock

En Linux o macOS tendrás que cambiar findstr por grep para filtrar la salida. El resultado mostrará una lista con los wakelocks actualmente activos en el dispositivo, con nombres que suelen corresponderse con servicios del sistema o componentes de aplicaciones instaladas.

ADB inalámbrico Android 11

En esa lista te pueden salir cosas como DreamManagerService, SystemJobService de WhatsApp o servicios de Google Fotos relacionados con copias o tareas programadas. Aunque los nombres sean algo crípticos, basta con fijarse en el paquete (por ejemplo, com.whatsapp) para ver qué app es la responsable y decidir si tiene sentido que esté tan despierta.

Wakelock Detector: la herramienta clásica para localizar apps que despiertan el procesador

Durante años, una de las utilidades más populares para este tema fue Wakelock Detector. Su misión era sencilla: listar qué apps mantenían despierto el teléfono y durante cuánto tiempo, tanto a nivel de CPU como de pantalla. Aunque hoy está descontinuada y no se adapta bien a las versiones más nuevas de Android, conviene entenderla porque muchas ideas han pasado a otras herramientas.

Wakelock Detector mostraba estadísticas de todos los wakelocks registrados desde el último arranque, agrupando los de una misma app en una vista expandible para que fuese más fácil interpretar los datos. Por defecto ordenaba por tiempo de wakelock de CPU, poniendo en cabeza a las aplicaciones más sospechosas.

Entre sus funciones más destacadas estaban:

  • Separar entre wakelocks de CPU (Partial) y de pantalla (Full), pudiendo cambiar de un tipo a otro desde la parte superior de la interfaz.
  • Permitir ordenar por tiempo de wakelock, estado en ejecución o nombre, lo que ayudaba mucho a localizar los procesos más problemáticos.
  • Marcar en rojo las aplicaciones activas en ese momento, para identificar de un vistazo qué estaba corriendo en segundo plano.
  • Mostrar el porcentaje de tiempo total que la CPU había estado despierta o dormida desde el último ciclo de carga o reinicio.

El uso recomendado era muy simple: se aconsejaba cargar el móvil por encima del 90 %, desconectarlo o reiniciarlo, dejarlo funcionar de forma normal una o dos horas y después abrir Wakelock Detector. Las apps que aparecían en los primeros puestos por tiempo de wakelock solían ser las culpables de los drenajes misteriosos.

Con la llegada de Android KitKat, Google cambió el acceso a las estadísticas de batería y, desde entonces, Wakelock Detector necesitó acceso root para funcionar plenamente. Los desarrolladores sacaron una versión LITE que intentaba saltarse esa limitación utilizando comandos ADB o incluso una extensión de Chrome para conceder permisos a la app sin root, pero requería seguir una pequeña guía previa.

La aplicación tuvo bastante repercusión: medios como XDA, HowToGeek, LifeHacker o DotTech la analizaron y muchos usuarios avanzados la adoptaron para complementar la información básica de batería de Android. A día de hoy, eso sí, hay que contar con que está desactualizada y sin mantenimiento, por lo que en móviles modernos puede ofrecer datos incompletos o ni siquiera funcionar.

Wakelock Detector – Save Battery y otros enfoques similares

wakelock detector

Alrededor del concepto de wakelocks surgieron también aplicaciones complementarias como Wakelock Detector – Save Battery, con una orientación un poco distinta. Su objetivo era identificar qué servicios o procesos del sistema consumían más energía, muchas veces debido a conexiones frecuentes a Internet y actividad de fondo constante.

Esta app presentaba listados con procesos del sistema y aplicaciones de usuario mostrando el impacto en batería, para que el usuario pudiera ver enseguida si Gmail, WhatsApp u otra app estaban abusando del procesador. La filosofía general era clara: mostrar la información, y que cada uno decidiera si forzar detención, cambiar la configuración o directamente desinstalar.

En paralelo, en la comunidad root ganaron fama utilidades avanzadas como Amplify. Este módulo para Xposed permitía limitar la frecuencia y duración de determinados wakelocks y alarmas, de forma muy granular. Por ejemplo, podían configurarse servicios de localización de Google para que se activasen cada 240 o 720 segundos, reduciendo así el número de despertares de la CPU.

Eso sí, modificar wakelocks del sistema tiene su riesgo: tocar procesos equivocados puede romper funciones básicas del móvil, por lo que este tipo de herramientas se recomiendan solo para usuarios experimentados que sepan muy bien qué están cambiando.

Monitorear el uso de wakelocks en Android antiguos con root

En dispositivos más viejos o en versiones como Jelly Bean y KitKat, el tema de los wakelocks se volvió aún más delicado porque Google restringió el acceso a las estadísticas internas. Desde ciertas versiones de Android, solo las aplicaciones con permisos de root podían leer toda la información de wakelocks, lo que dejó a muchas herramientas antiguas fuera de juego si actualizabas el sistema.

Si disponías de acceso root, aplicaciones como Wakelock Detector o BetterBatteryStats podían registrar el número de veces que se despertaba la CPU, cuánto tiempo permanecía activa y qué procesos estaban implicados. Ahí era donde se veía claramente, por ejemplo, cómo los Google Play Services podían despertar el procesador cada 60 segundos y mantenerlo activo unos 15 segundos cada vez.

no suenan las llamadas entrantes en el teléfono móvil

Si haces la cuenta, eso significa que cada hora la CPU podía estar despierta unos 900 segundos (15 minutos) con la pantalla apagada, solo por servicios de Google mal ajustados. En casos extremos se llegaba al punto de que el móvil apenas entraba en deep sleep, y la batería se desplomaba sin que el usuario entendiera por qué.

El patrón para diagnosticar era parecido: se instalaba la app de monitorización, se le daban los permisos necesarios, se cargaba el teléfono, se dejaba unas horas sin usar demasiado y luego se revisaba qué wakelocks tenían tiempos de actividad exagerados. Si una app acumulaba horas de CPU despierta, estaba claro que algo no iba bien.

Qué hacer cuando detectas wakelocks que drenan tu batería

Una vez identificadas las aplicaciones que más despiertan tu teléfono, toca actuar. La medida más eficaz suele ser la más evidente: desinstalar o desactivar las apps problemáticas, siempre que no sean imprescindibles.

Si no puedes o no quieres borrarlas, tienes varias opciones desde Ajustes → Aplicaciones → [Nombre de la app]. Ahí puedes restringir su actividad en segundo plano, revocar permisos que no necesita o impedir que se inicie automáticamente. En muchísimos casos, con eso basta para domar apps que se pasan el día despertando al procesador.

Si hablamos de móviles antiguos o con capas muy agresivas, puede tener sentido usar herramientas como Greenify o SD Maid para hibernar aplicaciones que apenas usas pero que están constantemente levantando el sistema. En algunos escenarios avanzados, y siempre con mucho cuidado, se llega a congelar bloatware de sistema que se sabe que no es esencial, aunque eso ya entra en territorio de usuarios con root y ganas de cacharrear.

Conviene recordar que si te pasas limitando apps de mensajería, correo o copias de seguridad, te puedes quedar sin notificaciones en tiempo real o sin algunas sincronizaciones. La idea es encontrar un punto medio razonable entre autonomía y funcionalidad, no dejar el móvil como un ladrillo ultraahorrador.

Entender bien qué son los wakelocks, cómo se comportan tus aplicaciones y qué herramientas tienes para vigilarlo te da mucho más control sobre la autonomía de tu Android. Identificando las apps que abusan de mantener despierta la CPU o la pantalla, ajustando su configuración, limitando su actividad en segundo plano o buscando alternativas más optimizadas, es perfectamente posible reducir esos drenajes misteriosos y alargar de forma clara las horas de pantalla que sacas cada día.