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

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 decenas de minutos o incluso horas. ¿Será mi pantalla siempre en ser suficiente 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, utilizo la forma estándar:

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

Lo que dicen los docs:

Para evitar el drenaje de la batería, un dispositivo Android que se deja inactivo rápidamente se queda dormido.

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

Normalmente, la radio Wi-Fi se puede apagar cuando el usuario no ha utilizado el dispositivo en un rato.

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

¿Significa esto que …

La radio Wi-Fi o la CPU pueden pasar al modo de reposo o apagarse cuando el usuario no interactúa con el dispositivo durante un tiempo más prolongado (incluso si la pantalla sigue encendida).

Y, más específicamente, una conexión de Wi-Fi o de datos móviles de una tarea en segundo plano (por ejemplo, IntentService ) se IntentService cuando aún haya una Activity que mantenga 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 estoy 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 es administrado por clases de framework (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 un dispositivo Android apagar WiFi mientras la pantalla está encendida (y no en el lockscreen). No puedo descartar la posibilidad de que WiFi podría ser apagado debido a las condiciones de batería baja en el modo de ahorro de energía extrema de algunos fabricantes.

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

Yo lo expresaría más como "mantener la pantalla en ayuda". O, mejor, dejar que el dispositivo se ponga en modo de reposo normalmente dejará caer sus conexiones WiFi.

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

Lo que significa que estás usando un WakeLock . Simplemente sucede que es uno que se maneja para usted, y puesto que usted no puede atornillar para arriba, usted no necesita el permiso de WAKE_LOCK .

La radio Wi-Fi o la CPU pueden pasar al modo de reposo o apagarse cuando el usuario no interactúa con el dispositivo durante un tiempo más prolongado (incluso si la pantalla sigue encendida).

Para un dispositivo normal, no. No puedo descartar a algún fabricante haciendo algún tipo de e-tinta cosa que podría tener ese comportamiento.

Y, más específicamente, una conexión de Wi-Fi o de datos móviles de una tarea en segundo plano (por ejemplo, IntentService) se detendrá cuando aún haya una Actividad que mantenga la pantalla encendida?

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


Dicho esto, la fiabilidad de lo que está haciendo va a chupar a menos que este sea un entorno completamente controlado. Usted está haciendo un montón de suposiciones:

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

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

  • Nadie está jugando con la red Wi-Fi, ya sea en general o con ajustes en el dispositivo (por ejemplo, ponerlo en modo avión)

  • Etc.

Si se trata de algún tipo de monitor de proceso industrial o en el dispositivo de kiosco, las probabilidades de que el control de estas cosas a la perfección es decente, pero no genial. Usted consigue mucho más allá de eso, y las probabilidades de estas cosas sosteniendo la cola 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.

No sólo es este material en gran parte indocumentado, pero es realmente hasta los fabricantes de dispositivos. Es por eso que si este no es un entorno muy controlado, mientras que usted es bienvenido para tratar de obtener este tipo de comportamiento, el mundo real es muy complicado, y no debe asumir que puede mantener una conexión abierta indefinidamente.

La CPU bien no entrará en sueño profundo si la pantalla está encendida. Bandera mantener la pantalla en la forma más inteligente para mantener la pantalla en vez de bloqueos de la estela para ahorrar la vida de la batería. Ir a través de siguiente enlace y leer en que leer Sr. Hackborns comentario

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 sueño en el sistema -> wifi-> avance. En eso si está siempre encendido entonces no entrará en modo de sueño.

  • Unidad que prueba una respuesta de red. Funciona al depurar, no cuando se ejecuta realmente
  • ¿Cómo desactivo explícitamente el modo de flujo en bloque para las conexiones HTTP en Android?
  • Retrofit 2 no puede cargar un archivo con dos parámetros adicionales de cadena separados
  • ¿Por qué la recepción de multidifusión no funciona en algunos dispositivos Android?
  • Comparación de las bibliotecas de redes Android: OkHTTP, Retrofit y Volley
  • ¿Por qué URLConnection tiempo de espera después de 6 + minutos en lugar de 5 segundos?
  • Oyente de red Android
  • Rehacer la solicitud anterior cuando el primero falla con 401 No autorizado
  • Eventos enviados por el servidor en Android
  • ¿Está disponible la red en Android?
  • Ejecución de WebView en segundo plano
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.