Tengo un servicio que genera un hilo de descarga que descarga a veces archivos de gran tamaño. Me di cuenta de que tan pronto como el teléfono se fuera a dormir, el hilo de descarga se ralentizaría significativamente, luego se detendría.PARTIAL_WAKE_LOCK contra SCREEN_DIM_WAKE_LOCK en el hilo de descarga
El remedio obvio, un wakelock. Entonces, creo que estaría bien adquirir partial_wake_lock, solo para mantener la CPU procesando la descarga. Sin embargo, eso no funciona, el mismo comportamiento, la descarga se ralentiza y luego se detiene cuando la pantalla se apaga.
Luego probé un screen_dim_wake_lock. Esta vez, la pantalla permaneció encendida (atenuada) y la descarga siguió funcionando a velocidad máxima hasta que se completó, se lanzó Wakelock y luego el teléfono se quedó dormido.
Mi pregunta es, ¿por qué no puedo mantener mi hilo ejecutándose cuando sostengo 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 ejecutando en el hilo de UI quizás?
EDIT:
he añadido un wifilock. El wifi no se va a dormir, pero mi hilo aún muere. Si algún otro proceso despierta el sistema, la descarga continuará a la velocidad normal, luego disminuirá la velocidad nuevamente. Si levanto el teléfono, continuará a una velocidad normal que disminuirá una vez más cuando la pantalla se apague. Parece como si el hilo fuera empujado a un segundo plano por el sistema. Me pregunto si puedo evitar eso.
llegar a ninguna parte con esto? Estoy teniendo un problema similar con la red siendo temperamental a menos que use SCREEN_DIM_WAKE_LOCK. Parcial wake-lock simplemente no es suficiente, ni cuando se combina con WifiLock ... – barkside