PARTIAL_WAKE_LOCK vs SCREEN_DIM_WAKE_LOCK en el subproceso de descarga
Tengo un servicio que genera un hilo de descarga que descarga archivos a veces grandes. Me di cuenta de que tan pronto como el teléfono se quedó dormido, el hilo de descarga se ralentizaría significativamente, luego se detendría.
El remedio obvio, un wakelock. Por lo tanto, creo que sería aceptable para adquirir un partial_wake_lock, sólo para mantener la procesadora procesar la descarga. Eso no funciona, sin embargo, el mismo comportamiento, la descarga se ralentiza y luego se detiene cuando la pantalla se apaga.
- StandBy como actividad
- ¿Cómo puedo ver qué wakelocks están activos?
- Servicio, WakeLock
- Android - Wake lock no se está adquiriendo correctamente, la aplicación debe seguir funcionando en modo de espera
- Si un wakelock es adquirido y mi aplicación se bloquea, ¿qué debo hacer?
Entonces intenté un screen_dim_wake_lock. Esta vez, la pantalla se mantuvo (atenuada), y la descarga siguió funcionando a toda velocidad hasta que se hizo, wakelock liberado, y luego el teléfono durmió.
Mi pregunta es, ¿por qué no puedo mantener mi hilo en ejecución cuando se mantiene un partial_wake_lock igual que durante un screen_dim_wake_lock? ¿Hay algún comportamiento indocumentado sobre la diferencia entre estos 2? ¿Es porque no estoy corriendo en el hilo de la interfaz de usuario tal vez?
EDITAR:
He añadido un wifilock. El wifi no ir a dormir, pero mi hilo todavía muere. Si algún otro proceso despierta el sistema, la descarga continuará a velocidad normal, luego se ralentizará de nuevo. Si despierto el teléfono, continuará a velocidad normal que se ralentizará una vez más cuando se apague la pantalla. Parece como si el hilo se está empujando en el fondo por el sistema. Me pregunto si puedo evitarlo.
- Android: Mantenga la cámara LED encendida después de que la pantalla se apague
- conexión a internet en pausa después de bloqueo de teléfono android
- Cómo mantener el vibrador encendido indefinidamente de un servicio o receptor
- El bloqueo de la repetición produce una excepción en Nexus 5
- ¿Cómo despertar android y mostrar la actividad?
- Cómo mantener el dispositivo Android de dormir mientras está conectado
- Servicio androide con repetición de hilo en el fondo con el bloqueo parcial de la estela
- ¿Traer la aplicación al frente, activar la visualización y desbloquear desde AlarmManager?
Tuve el mismo problema con usted con un servicio que continuamente descargar un gran conjunto de URL. La mejor manera era usar un screen_dim_wake_lock como lo hiciste y llevar tu servicio al primer plano, como se describe aquí .
De tal manera que la pantalla está siempre encendida, lo mismo sucede y con su interfaz WI-FI. Por el contrario, si deja el teléfono inactivo durante un tiempo, la pantalla se apagará, el teléfono se pondrá en modo de reposo y el WIFI se apagará también, después de 15 minutos!
Por lo tanto, otra manera es usar un partial_wake_lock (sólo la CPU está encendida) y cambiar la configuración de su teléfono para que el WIFI esté siempre encendido (tal vez esto parece como el WIFI_LOCK que usted adquiere ..):
- Desde la pantalla de inicio, vaya a Sistema o Configuración y luego
- Seleccione Wireless y redes
- Seleccione la configuración WI-FI
- Presione Menú y elija Avanzadas
- Presione Wi-Fi Sleep Policy y cámbielo a Never
Entonces su servicio funcionará incluso en modo de suspensión con la pantalla apagada. El único problema aquí es:
Si pierde la conectividad WIFI durante un tiempo, entonces el Android puede matar a su servicio, ya que estará inactivo .. Pero si su teléfono siempre está conectado a la red WIFI con buena estabilidad, entonces todo funcionará bien!
Echa un vistazo a la cerradura Wifi, junto con un bloqueo parcial:
http://developer.android.com/reference/android/net/wifi/WifiManager.WifiLock.html
- No se puede obtener la cuenta de satélite Android
- Error al buscar la ventana – comportamientos diferentes desde la misma aplicación en el nexo de 2 galaxias