Además de los estados "despierto", "dormido" y "apagado" que se menciona en @CommonsWare, existe la distinción entre si la CPU está dormida o solo la pantalla. Por ejemplo, el official docs here describe de esta manera:
Para evitar que se agote la batería, un dispositivo Android que se deja inactivo rápidamente se duerme. Sin embargo, hay ocasiones en que una aplicación necesita activar la pantalla o la CPU y mantenerla despierta para completar el trabajo . [énfasis añadido]
En el marco de tres etapas descrito por CommonsWare, un dispositivo cuya pantalla es oscura probablemente no esté categorizada como "dormida" a menos que la CPU también esté detenida. Pero como lo implica el párrafo anterior, el estado de pantalla oscura puede referirse legítimamente como "dormido". Sin duda, esta es la razón por la que las personas se refieren al "sueño profundo" para aclarar que están hablando de que la CPU está dormida.
This doc page menciona también
Cuando un dispositivo Android se deja inactivo, primero tenue, a continuación, apague la pantalla, y en última instancia apague la CPU. Esto evita que la batería del dispositivo se agote rápidamente.
Así que si quieres estar incompleta, podría agregar "dim" a la lista de "las fases del sueño/niveles":
- despierto
- tenue pantalla
- fuera
- CPU fuera (verdadero "sueño" o "sueño profundo")
- alimentación
Aparentemente, la transición de 2 a 3 a 4 es bastante rápida cuando se produce el tiempo de espera inactivo. Pero hay otros momentos en que la pantalla puede estar apagada sin una transición a un sueño profundo; p.ej. al reproducir audio (al menos en ciertas aplicaciones).
Ojalá pudiera decirle cómo predecir cuándo el dispositivo pasará de la pantalla apagada a la CPU desactivada, p. cuánto tiempo es el tiempo de espera, pero no he encontrado esa información. Lo que he encontrado es FLAG_KEEP_SCREEN_ON and WAKE_LOCK para evitar que ocurra una u otra.
P.S. Si quieres ser exhaustiva, se podía contar daydream en su lista de "las fases del sueño":
Daydream es un nuevo [a partir de Android 4.2] modo de protector de pantalla interactiva para dispositivos Android. Se se activa automáticamente cuando el dispositivo se inserta en una base dock o cuando el dispositivo se deja inactivo mientras está enchufado a un cargador (en lugar de apagando la pantalla).
Desde el punto de vista de la aplicación que se ejecutaba anteriormente, suena como que Daydream se comporta como cambiar a una aplicación diferente. Por lo tanto, no es realmente una cuestión de que el dispositivo duerma, aunque su actividad se para, supongo.
¿Sabrá si hay una forma de recibir una notificación cuando el dispositivo entra en alguno de estos 3 estados? – zer0stimulus
@ zer0stimulus: No realmente. Es difícil decirle que la CPU está apagada para el modo de suspensión, porque la CPU está apagada para el modo de suspensión. Del mismo modo, es difícil decirle que el dispositivo está apagado porque el dispositivo está apagado. Hay algunos 'Intents' de difusión que están relacionados de alguna manera con estos estados (por ejemplo,' ACTION_SCREEN_OFF'), pero eso es todo. – CommonsWare
¿cuánto tiempo permanecerá el dispositivo despierto? ¿Deberíamos adquirir un bloqueo de activación inmediatamente después de leer desde el socket para procesar el mensaje? – Erdal