Wakelock

De FdIwiki ELP
Revisión a fecha de 20:21 26 ene 2017; Ivan (Discusión | contribuciones)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Introducción

¿Qué es un Wakelock?

Un Wakelock es un proceso que se ejecuta en segundo plano y que fuerza a la CPU a estar activa. Por lo tanto un Wakelock fuerza al dispositivo a mantenerse despierto aún cuando no lo estemos utilizando.

Un Wakelock no se debe confundir con los procesos de sincronización de cuentas que tengamos almacenados en nuestro Smartphone(por ejemplo, la sincronización de correos de Gmail para que cuando nos llegue un nuevo correo se notifique inmediatamente en el dispositivo). Estos procesos de sincronización si que pueden tener asociados Wakelocks.

Tipos

  • Parciales: mantienen la CPU activa, pero no la pantalla.
  • Totales: mantienen la CPU activa, además de la pantalla.

Motivación

Los procesadores actuales disponen de distintos modos de gasto de energía:

  • Modo idle: se usa cuando el procesador se encuentra totalmente inactivo, por lo que no se permite la ejecución de instrucciones.
  • Modo bajo consumo: el procesador tiene una frecuencia y voltaje bajos.
  • Modo alto rendimiento: el procesador tiene una frecuencia y voltaje altos.

Si por ejemplo suspendemos un ordenador, el kernel entra en el suspensión, en el cual se apagan las CPU y por consiguiente las aplicaciones que se encontraban en funcionamiento se interrumpen. Al suspender el ordenador también se apagan la pantalla y los discos del dispositivo, pero la RAM permanece activa.

Dado el carácter multimedia y el uso elevado de aplicaciones en segundo plano que tienen que mantenerse activas en los Smartphones (por ejemplo reproductor de música, Whatsapp, llamadas telefónicas...), el usuario no quiere que al bloquear la pantalla deje de ejecutarse aplicaciones que tenga ejecutando en segundo plano, por lo que estos dispositivos no deben entrar en el modo suspensión de la misma manera en la que lo hacen los ordenadores convencionales.

Por lo cual, se decidió implementar un mecanismo para Android llamado Wakelock, el cual permite a las aplicaciones, drivers y otros elementos indicar al sistema cuándo quieren que el sistema se mantenga activo para que las aplicaciones puedan seguirse ejecutando en un segundo plano.

Para ahorrar batería, los dispositivos Android se duermen rápidamente tras un corto periodo de inactividad del usuario. Por lo tanto, los Wakelocks pueden ser usados para mantener cierto Hardware activo: pantalla, CPU… durante un determinado tiempo.

Usos en aplicaciones

Los Wakelocks se utilizan en las aplicaciones Android para mantener cierto hardware encendido durante un tiempo determinado.

Ejecución de secciones críticas

Utilizamos Wakelocks para que al ejecutar una cierta sección crítica de código, el dispositivo no se apague. //FOTO

Usos incorrectos

Adquisición temprana/liberación tardía

Nunca se libera

Liberación antes de adquisición

Apps que utilizan Wakelocks

Wakelocks en el kernel

Controversias