Cómo detener Wakelocks desde cualquier aplicación de Android sin root

¿Alguna vez se fue a dormir por la noche con un teléfono completamente cargado, solo para despertarse con poca batería? No te preocupes, nos ha pasado a todos. Incluso con el modo Doze y todos los esfuerzos de Google para mejorar la duración de la batería en Android, la duración de la batería inactiva no es exactamente ideal. Especialmente si tienes muchas aplicaciones instaladas. El culpable es probablemente un wakelock de una aplicación como Facebook, Messenger, Snapchat, lo que sea. Afortunadamente, puedes detener fácilmente estos wakelocks usando simples comandos de shell. ¡Y ni siquiera necesitas root para eso! Hoy, le mostraremos cómo puede detener wakelocks desde cualquier aplicación de Android sin usar root. Esto se puede hacer en todos los teléfonos Android, siempre que tenga ADB.


Detener Wakelocks desde cualquier aplicación de Android

Video tutorial de nuestro canal de YouTube en caso de que prefiera una ayuda visual

Antes de comenzar con cualquier cosa, necesitará configurar ADB tanto en su teléfono como en su computadora. Si aún no lo ha hecho, consulte este tutorial para configurarlo.

A menos que esté completamente seguro de lo que está agotando su batería, utilizaremos una pequeña herramienta llamada "Mejores estadísticas de la batería" para encontrar al culpable. El desarrollador está activo en nuestros foros, por lo que puede encontrar la aplicación aquí. Sin embargo, si desea apoyar al desarrollador, también puede descargarlo de Google Play Store, donde es una aplicación paga. Proporciona muchas otras estadísticas, como estados de CPU, reactivaciones de aplicaciones e información de red.

Requiere root en dispositivos con Android KitKat y versiones posteriores, sin embargo, existe una solución alternativa de comando ADB que existe para dispositivos no rooteados. Conecte su dispositivo a su computadora, ya sea a través de depuración USB o depuración WiFi. Asegúrese de que esté conectado mediante el comando:

 adb devices 

Luego, vamos a iniciar el shell de Android con el siguiente comando:

 adb shell 

Posteriormente, vamos a otorgar a los BetterBatteryStats recién instalados el permiso BATTERY_STATS con:

 pm grant com.asksven.betterbatterystats_xdaedition android.permission.BATTERY_STATS 

¡Hecho! Ahora BBS funcionará en su dispositivo no rooteado.

Nota: si compró Better Battery Stats en Google Play Store, cambie "com.asksven.betterbatterystats_xdaedition" a solo "com.asksven.betterbatterystats" en el comando ADB anterior.

Encontrar al culpable

Tiene muchas aplicaciones en su teléfono, por lo que no hay una manera fácil de saber con certeza qué está consumiendo su batería. Es por eso que estamos utilizando Better Battery Stats para encontrar el wakelock responsable. Después de configurar la aplicación, cargue su teléfono, luego desenchúfelo y déjelo solo con la pantalla apagada durante al menos 30 minutos. Esto debería darle a la aplicación suficiente tiempo para registrar todo. Una vez dentro de la aplicación, seleccione Wakelocks parciales y vea qué aplicación está causando el mayor daño.

En el resumen principal de BBS, toque “Resumen” para ver todas las opciones.

Toque "Wakelocks parciales" para ver todos los wakelocks en su dispositivo.

En nuestro caso, el wakelock "LagunaServiceHandler" de Snapchat es el culpable.

Deteniendo el Wakelock

Ahora que sabemos lo que está consumiendo su batería, podemos detenerlo. En nuestro caso, es Snapchat. Sea cual sea su culpable, asegúrese de encontrar el nombre del paquete de la aplicación usando Package Name Viewer de Play Store, porque lo necesitaremos para nuestro comando ADB a continuación.

Como obviamente desconectó su teléfono para usar Mejores estadísticas de batería, vuelva a conectarlo a su computadora para usar ADB nuevamente. Una vez más, verifique si está conectado correctamente con

 adb devices 

E ingrese el shell usando:

 adb shell 

Ahora, usando el nombre del paquete de la aplicación de destino, envíe el siguiente comando:

 cmd appops set com.android.application WAKE_LOCK ignore 

Por supuesto, va a cambiar "com.android.application" con el nombre del paquete de su aplicación. En mi caso:

 cmd appops set com.snapchat.android WAKE_LOCK ignore 

Si ha realizado todos los pasos correctamente, el sistema Android ignorará todas las solicitudes de wakelocks de la aplicación. ¡Felicidades!


Explicación

Un wakelock, en términos simples, es solo una forma para que una aplicación mantenga la CPU / pantalla / otras cosas despiertas cuando el teléfono está inactivo para realizar una tarea de fondo específica. Algunas aplicaciones necesitan legítimamente wakelocks para funcionar correctamente, pero el problema surge cuando algunas aplicaciones retienen wakelocks repetidamente, las mantienen durante mucho tiempo sin soltarlas o realizan tareas excesivas / innecesarias de red y CPU aprovechando estos wakelocks.

Un ejemplo: las aplicaciones como Snapchat, Facebook, Messenger u otras aplicaciones de redes sociales incluyen comportamientos erróneos. Este tutorial es simplemente una forma de evitar que estos wakelocks vuelvan a ocurrir sin desinstalar la aplicación. Sin embargo, si observa que la aplicación deja de funcionar correctamente después de usar este comando ADB, puede cambiar las cosas a la forma en que estaban ejecutando nuevamente el comando y cambiando "ignorar" a "permitir", o simplemente desinstalando y volviendo a ejecutar -instalar la aplicación nuevamente.