2010-12-07 14 views
34

Mantener la pantalla despierto se puede lograr mediante el uso de un wakelock porDiferencia entre Wakelock y FLAG_KEEP_SCREEN_ON?

mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, 
       getClass().getName()); 

o añadiendo la FLAG_KEEP_SCREEN_ON a la ventana,

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

¿Cuál es la diferencia técnica entre los dos y en términos de rendimiento y la duración de la batería que se recomienda?

Respuesta

40

Un wakelock le da mucho más control (como despertar el teléfono para descargar algo sin apagar la pantalla) y requiere que su aplicación tenga permiso para el wakelock.

Por lo tanto, se recomienda FLAG_KEEP_SCREEN_ON si todo lo que desea es mantener la pantalla encendida mientras su ventana está visible.

+0

Acabo de publicar una pregunta sobre esto, ya que FLAG_KEEP_SCREEN_ON solo funciona cuando la "depuración de USB" está marcada ... http://stackoverflow.com/questions/15189767/keep-screen-on-in-activity- does-not-work-with-flag-keep-screen-on – Ted

+9

@Ted: Lo que has escrito aquí y en (al menos) otras dos preguntas es simplemente incorrecto. Deberíamos corregirlo para los demás: 'FLAG_KEEP_SCREEN_ON' funciona perfectamente para lo que describe: simplemente hace que la pantalla continúe. Tampoco se requiere ningún permiso para que esto funcione, ni solo funciona si su dispositivo está en modo de depuración. Debería funcionar en todos los dispositivos, y si no es así, es culpa del dispositivo;) – caw

2

Wakelock es vago, ya que tiene muchas opciones diferentes. La bandera FLAG_KEEP_SCREEN_ON solo hace eso.

| Flag Value    | CPU | Screen | Keyboard | 
----------------------------------------------------- 
| PARTIAL_WAKE_LOCK  | On* | Off | Off  | 
| SCREEN_DIM_WAKE_LOCK | On | Dim | Off  | 
| SCREEN_BRIGHT_WAKE_LOCK | On | Bright | Off  | 
| FULL_WAKE_LOCK   | On | Bright | Bright | 

Por favor, vea wakelock o PowerManager para obtener información específica para Android, y otras respuestas para la aplicación exacta.

0

bloqueo despertador se utiliza en servicios en segundo plano para mantener el funcionamiento de la CPU para hacer el trabajo, mientras que la pantalla está apagada. Nunca debe usar el bloqueo de wake en una actividad. Para usar el bloqueo de activación, se debe agregar el permiso WAKE_LOCK en el archivo de manifiesto de la aplicación.


FLAG_KEEP_SCREEN_ON se utiliza en la actividad para mantener la pantalla encendida, que también mantendrá la CPU en sin ningún permiso especial, a diferencia de la cerradura estela. Nunca debe usar FLAG_KEEP_SCREEN_ON en un servicio.

¡Salud!