2011-12-01 12 views
6

Sé que android usa wake lock para mantener la CPU encendida o la pantalla encendida. Es obvio que el bloqueo de activación de pantalla evita que el temporizador activo del usuario apague la pantalla después de un período de inactividad del usuario.¿Cuándo se detiene Android su CPU sin bloqueo de activación?

Pero me pregunto cuándo tendrá efecto exactamente el bloqueo de cpu wake.

1.Si creo un nuevo hilo y sigo drenando la CPU en el fondo sin ningún bloqueo de activación, apagar la pantalla no lo detendrá. ¿Se detendrá y cuándo se detendrá?

2. ¿Qué pasa con un hilo programado con Timer.schedule()?

3. Da lugar a otra pregunta, si guardo una conexión de socket larga en un servicio, que está bloqueado en socket.read(). ¿Debo adquirir un bloqueo de activación para asegurarme de que el servicio se active cuando el socket recibe datos de forma remota?

Gracias.

+0

¿Y qué pasará si creo un hilo en el servicio de Android con el hilo estándar de Java, luego se llamó a esperar (tiempo de espera) en su hilo, siempre se despertará en el momento adecuado? – lyu

Respuesta

5

respuestas a todas sus preguntas secundarias

  1. Android duerme cuando no despertar de bloqueo está activo. No importa qué procesos y subprocesos se estén ejecutando, seguirá durmiendo. Eso significa que si su hilo o algún otro proceso no ha activado un bloqueo de activación, su hilo no se ejecutará y, por lo tanto, no agotará ninguna batería. El hilo se activará solo cuando algún otro proceso adquiera un wakelock.

  2. Igual se aplica a la programación del Temporizador(). Supongamos que escribe un temporizador que se ejecuta cada segundo pero sin ningún tipo de bloqueo de activación, y digamos que Android se queda dormido durante 10 segundos. Cuando despierta p en el 11º segundo, identificará que su temporizador ha expirado 10 veces, simplemente descartará las 9 instancias y lo ejecutará solo una vez. Si desea contar con temporizadores muy confiables, deberá obtener un bloqueo de activación o un temporizador de alarma del usuario.

  3. Sí.

0

lo que aprendo de diferente funcionalidad relacionada con Wake-Lock, Sistema Android nunca duerme, si duerme usted no conseguirá SMS, llamada Android es decir, no sólo se ejecutará la tarea nivel de sistema operativo cuando se va en el sueño.
Wake-lock es un mecanismo donde cualquier aplicación puede solicitar al sistema que el dispositivo permanezca encendido. La aplicación puede realizar operaciones en segundo plano a pesar de que el usuario no se haya movido para iniciar esa aplicación.

Para 1 & 2 Akshar ha explicado correctamente. 3. Como para realizar cualquier operación en su aplicación mientras el sistema está en estado inactivo (solo se ejecutan tareas de nivel de sistema operativo), primero debe solicitar el bloqueo de activación desde el sistema y solo la aplicación puede ejecutar sus operaciones. Después de completar las operaciones, debe liberar el bloqueo de activación para que el sistema pueda pasar a la administración de tareas de nivel de sistema operativo.

Cuestiones relacionadas