1.Si le téléphone est en mode veille, mis à part un appel téléphonique entrant, vous pouvez utiliser AlarmManager pour réveiller le téléphone.
De la documentation de la classe AlarmManager:
Le gestionnaire d'alarme est titulaire d'une méthode aussi longtemps que OnReceive() du récepteur d'alarme réveil CPU verrouillage est en cours d'exécution. Cette garantit que le téléphone ne sera pas sommeil jusqu'à ce que vous avez fini de gérer la diffusion. Une fois les retours onReceive() , le gestionnaire d'alarmes publie ce verrou de sillage. Cela signifie que, dans certains cas, le téléphone sera mis en veille dès que votre méthode onReceive() se terminera à . Si votre récepteur d'alarme a appelé Context.startService(), il est possible que le téléphone dorme avant le lancement du service demandé . Pour empêcher cela, votre BroadcastReceiver et le service devra mettre en œuvre une politique de verrouillage de réveil séparé pour assurer que le téléphone continue de fonctionner jusqu'à ce que le service devienne disponible.
2.Dans vous travaillez avec un AsyncTask, vous voulez publier les résultats sur le thread d'interface utilisateur sur onPostExecute()
De la documentation AsyncTask:
AsyncTask permet une bonne et facile utilisation du thread UI. Cette classe permet d'effectuer des opérations en arrière-plan et de publier des résultats sur le thread d'interface utilisateur sans avoir à manipuler les threads et/ou les gestionnaires.
3. Je vous suggère d'avoir lu dans la documentation officielle de Power Manager ce qui donne une bonne introduction au concept WakeLock.
Je voudrais aussi savoir ceci. Plus précisément, dans quelles conditions le téléphone va-t-il dormir? Si je commence une activité continue (télécharger un fichier dans mon cas) lorsque le téléphone est éveillé, y a-t-il une chance que le téléphone dorme pendant que mon processus fonctionne? – Timmmm