onrestart library example create application android android-lifecycle android-networking

android - library - ¿Puede Wi-Fi o la CPU ir a dormir cuando la pantalla está encendida?



onsaveinstancestate android example (2)

Hay WakeLock s y WifiLock s en Android, ¿pero necesito estos si mi pantalla nunca se apaga?

Estoy usando conexiones persistentes (por ejemplo, WebSockets) durante docenas de minutos o incluso horas. ¿Estará mi pantalla siempre encendida para evitar que el dispositivo pierda esas conexiones (si asumimos que la conexión permanece disponible y el servidor está bien)?

Para mantener la pantalla encendida, uso la forma estándar:

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

Lo que dicen los doctores:

Para evitar que la batería se agote, un dispositivo Android que se deja inactivo se duerme rápidamente.

( https://developer.android.com/training/scheduling/wakelock.html )

Normalmente, la radio Wi-Fi puede apagarse cuando el usuario no ha usado el dispositivo por un tiempo.

( http://developer.android.com/reference/android/net/wifi/WifiManager.WifiLock.html )

¿Esto significa que ...

¿La radio Wi-Fi o la CPU pueden pasar al modo de suspensión o apagarse cuando el usuario no interactúa con el dispositivo durante más tiempo (incluso si la pantalla aún está encendida)?

Y, más específicamente, ¿puede una conexión de datos móviles o Wi-Fi de una tarea en segundo plano (por ejemplo, IntentService ) entrar en suspensión cuando todavía hay una Activity que mantiene la pantalla encendida?


¿Puede Wi-Fi o la CPU ir a dormir cuando la pantalla está encendida?

No.

Hay WakeLocks y WifiLocks en Android, ¿pero necesito estos si mi pantalla nunca se apaga?

No tengo muy claro cómo su pantalla nunca se apaga. Al final del día, AFAIK, un WakeLock siempre está involucrado. Si necesita WakeLock o si WakeLock está administrado por clases de marco (por ejemplo, android:keepScreenOn ) o el sistema operativo (por ejemplo, la opción Configuración para mantener la pantalla encendida), dependerá de lo que esté haciendo.

Nunca he visto a un dispositivo Android apagar WiFi mientras la pantalla está encendida (y no en la pantalla de bloqueo). No puedo descartar la posibilidad de que WiFi se apague debido a las condiciones de batería baja en el modo de ahorro de energía extremo de algún fabricante.

¿Estará mi pantalla siempre encendida para evitar que el dispositivo pierda esas conexiones (si asumimos que la conexión permanece disponible y el servidor está bien)?

Lo expresaría más como "mantener la pantalla encendida ayudará". O, mejor, dejar que el dispositivo entre en modo de suspensión normalmente descenderá sus conexiones WiFi.

Para mantener la pantalla encendida, uso la forma estándar: getWindow (). AddFlags (WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

Lo que significa que estás usando un WakeLock . Da la casualidad de que es una que se administra para usted, y como no puede WAKE_LOCK no necesita el permiso WAKE_LOCK .

¿La radio Wi-Fi o la CPU pueden pasar al modo de suspensión o apagarse cuando el usuario no interactúa con el dispositivo durante más tiempo (incluso si la pantalla aún está encendida)?

Para un dispositivo normal, no. No puedo descartar que algún fabricante haga algún tipo de cosa de tinta electrónica que pueda tener ese comportamiento.

Y, más específicamente, ¿puede una conexión de datos móviles o Wi-Fi de una tarea en segundo plano (por ejemplo, IntentService) entrar en suspensión cuando todavía hay una Actividad que mantiene la pantalla encendida?

No debería. En particular, la conexión de datos móviles nunca va a dormir.

Dicho todo esto, la confiabilidad de lo que está haciendo va a apestar a menos que este sea un entorno completamente controlado. Estás haciendo muchas suposiciones:

  • Algún tipo de fuente de energía permanente.

  • Nadie se mete con el dispositivo para mover su actividad al fondo o al botón ATRÁS fuera de él

  • Nadie se mete con la red WiFi, ya sea en general o con la configuración del dispositivo (p. Ej., En modo avión)

  • Etc.

Si se trata de algún tipo de monitor de proceso industrial o dispositivo en kiosco, las probabilidades de que usted controle estas cosas perfectamente son decentes pero no excelentes. Usted va mucho más allá de eso, y las probabilidades de que estas cosas se detengan rápidamente.

¿Tienes alguna referencia?

En un mundo ideal, todo esto estaría perfectamente documentado, habría paz entre todos los pueblos, y Hayley Atwell pensaría que soy un tipo decente.

Este no es un mundo ideal.

Esto no solo no está documentado en gran medida, sino que también depende de los fabricantes de dispositivos. Por eso, si este no es un entorno muy controlado, si bien puede intentar este tipo de comportamiento, el mundo real es muy desordenado y no debe asumir que puede mantener una conexión abierta indefinidamente.


Bueno, la CPU no entrará en suspensión profunda si la pantalla está encendida. La pantalla para mantener la marca activada es una forma más inteligente de mantener la pantalla encendida en lugar de los bloqueos de activación para ahorrar batería. Ir a través del siguiente enlace y leer que leer el comentario del Sr. Hackborns

https://groups.google.com/forum/#!searchin/android-developers/flag_keep_screen_on$20wake$20locks/android-developers/Tg7_sUL8Ec4/sI6ayb5yzigJ

Wifi tiene su opción de política de reposo en sistema -> wifi-> avance. En ese caso, si siempre está encendido, no entrará en modo de suspensión.