Cette réponse est un résumé du cours de formation Android, Transférer des données sans vider la batterie qui explique comment minimiser l'impact des téléchargements sur la durée de vie de la batterie. et des connexions réseau, notamment en ce qui concerne le radio sans fil.
En particulier Optimisation des téléchargements pour un accès efficace au réseau explique la machine d'état de la radio sans fil de manière assez détaillée et poursuit d'expliquer comment le modèle de connectivité de votre application doit interagir avec elle pour minimiser la consommation de la batterie.
La machine d'état de la radio sans fil
Référence
Chaque fois que vous créez une nouvelle connexion réseau, la radio passe à l'état de pleine puissance. Cette transition prend généralement environ 2 secondes. Pour minimiser la latence, la radio introduit un délai pour retarder la transition vers des états de moindre énergie.
Une radio 3G typique restera à pleine puissance pendant 5 secondes après la fin du transfert, avant d'attendre 12 secondes supplémentaires en état de faible consommation d'énergie avant de passer en veille. Au total, la radio consomme de l'énergie pendant près de 20 secondes à chaque fois que vous établissez une connexion.
Cette approche peut entraîner des inefficacités pour les applications fonctionnant sur les systèmes d'exploitation des smartphones modernes, où les applications s'exécutent à la fois en avant-plan (où la latence est importante) et en arrière-plan (où la durée de vie de la batterie doit être privilégiée).
Solutions
La clé pour minimiser l'effet des téléchargements sur votre batterie est de reconnaître que la fréquence des transferts a un impact plus dramatique que la taille des téléchargements. En termes pratiques, la recherche préalable et la mise en file d'attente/le regroupement de vos transferts sont particulièrement efficaces.
Sachant qu'à chaque fois que vous établissez une connexion, la radio consomme potentiellement de l'énergie pendant près de 20 secondes, il est important de regrouper vos transferts de données de manière à déphaser efficacement les transferts qui doivent avoir lieu dans une fenêtre de temps similaire, afin de transférer autant de données que possible au cours de chaque session de transfert pour minimiser le nombre de sessions.
De même, la préextraction vous permet de télécharger toutes les données dont vous êtes susceptible d'avoir besoin pendant une période donnée en une seule fois, sur une seule connexion, à pleine capacité. En préchargeant vos transferts, vous réduisez le nombre d'activations radio nécessaires pour télécharger les données, ce qui permet de préserver l'autonomie de la batterie, d'améliorer la latence, de réduire la bande passante et de diminuer les temps de téléchargement.
Cependant, la recherche préalable présente également le risque d'augmenter la consommation de la batterie et l'utilisation de la bande passante en téléchargeant des données qui ne sont pas utilisées.
Le degré d'agressivité de la préextraction dépend de la taille des données téléchargées et de la probabilité qu'elles soient utilisées. En règle générale, la bonne pratique consiste à préempter des données de telle sorte que vous n'ayez à lancer un autre téléchargement que toutes les 2 à 5 minutes, et de l'ordre de 1 à 5 mégaoctets.
Il est aussi généralement plus efficace de réutiliser les connexions réseau existantes plutôt que d'en créer de nouvelles. La réutilisation des connexions permet également au réseau de réagir plus intelligemment à la congestion et aux problèmes de données réseau connexes.