1.Si el teléfono está en modo de suspensión completa, además de una llamada de teléfono entrante, podría utilizar un intento de AlarmManager para activar el teléfono.
De la documentación AlarmManager clase:
El Alarm Manager mantiene un CPU estela bloqueo, siempre y cuando el método del receptor de alarma OnReceive() se ejecuta. Este garantiza que el teléfono no va a dormir hasta que haya terminado de manejar la transmisión. Una vez que onReceive() regresa, el Administrador de alarmas libera este bloqueo de activación. Esto significa que el teléfono dormirá en algunos casos tan pronto como a medida que finalice su método onReceive(). Si su receptor de alarma llamó a Context.startService(), es posible que el teléfono se apagará antes de que se inicie el servicio solicitado . Para evitar esto, su BroadcastReceiver y el Servicio necesitarán implementar una política de activación de activación separada para asegurar que el teléfono continúe ejecutándose hasta que el servicio esté disponible.
2. Si usted está trabajando con un AsyncTask, tendrá que publicar los resultados con el subproceso de interfaz de usuario en onPostExecute()
De la documentación AsyncTask:
AsyncTask permite adecuada y fácil uso del hilo de UI Esta clase permite realizar operaciones en segundo plano y publicar resultados en el subproceso UI sin tener que manipular subprocesos y/o controladores.
3.Le sugiero que lea en la documentación oficial de Power Manager que da una buena introducción al concepto de WakeLock.
También me gustaría saber esto. Específicamente, ¿bajo exactamente qué condiciones se va a dormir el teléfono? Si comienzo una actividad continua (cargando un archivo en mi caso) cuando el teléfono está encendido, ¿hay alguna posibilidad de que el teléfono se quede dormido mientras mi proceso está funcionando? – Timmmm