¿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)?
- Asignación de soluciones entre NetworkInfo y NetworkInterface
- Cómo probar descargar y subir velocidad wifi / 3g?
- ¿Cómo encontrar wifi y el uso de datos de red por separado por aplicación particular en android?
- ¿Cómo obtengo IP_ADDRESS en formato IPV4?
- Dirección de difusión de Android
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?
- WifiManager reconecta devuelve true pero no se conecta
- Tiempo de espera predeterminado de Android MediaPlayer
- ¿Necesita el sistema operativo Android DNS?
- Cómo determinar si el tipo de red es 2G, 3G o 4G
- Comportamiento de aplicaciones Android VOIP en modo Doze
- Android: ¿Cómo saber una dirección IP es una dirección IP Wifi?
- Google Cloud Messaging: los mensajes no se reciben a veces hasta que se cambia el estado de la red
- CONNECTIVITY_CHANGE obsoleta en el objetivo de Android N
¿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
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.
- Error de AAPT con código de error -1073741819
- Cómo actualizar Youtube Player View onItemClickListener () en un ListView