PARTIAL_WAKE_LOCK vs SCREEN_DIM_WAKE_LOCK en el hilo de descarga

Tengo un servicio que genera un hilo de descarga que a veces descarga archivos grandes. Me di cuenta de que tan pronto como el teléfono se apagaba, el hilo de descarga se ralentizaría significativamente y luego se detendría.

El remedio obvio, un wakelock. Por lo tanto, creo que estaría bien adquirir un parcial_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 continuó a toda velocidad hasta que se hizo, se activó Wakelock y luego el teléfono durmió.

Mi pregunta es, ¿por qué no puedo mantener mi hilo en ejecución cuando mantengo un parcial_bloque_despertar igual que durante un bloqueo de pantalla_dim_despertador? ¿Hay algún comportamiento indocumentado sobre la diferencia entre estos 2? ¿Es porque quizás no estoy corriendo en el hilo de la interfaz de usuario?

EDITAR

Agregué un wifilock. El wifi no se va a dormir, pero mi hilo aún muere. Si algún otro proceso activa el sistema, la descarga continuará a la velocidad normal y luego se ralentizará nuevamente. Si despierto el teléfono, continuará a la velocidad normal que disminuirá una vez más cuando se apague la pantalla. Parece que el sistema está empujando el hilo hacia el fondo. Me pregunto si puedo evitar eso.

Respuestas a la pregunta(2)

Su respuesta a la pregunta