70 votes

Réduire l'impact sur la batterie des applications qui téléchargent du contenu sur la radio d'un smartphone

Si je crée une application pour smartphone qui télécharge régulièrement des données à partir d'un serveur et qui, par intermittence, télécharge des données (analyses, publicités, etc.), que puis-je faire pour minimiser l'impact de ces transferts sur l'autonomie de la batterie ?

L'impact sur la batterie des transferts utilisant la radio sans fil (2G, 3G, LTE, etc.) est particulièrement important. Y a-t-il quelque chose dans le profil de consommation d'énergie de la radio sans fil qui devrait influencer mes choix quant au moment, à la nature et à la manière de transférer des données afin de minimiser son impact sur l'autonomie de la batterie ?

79voto

Reto Meier Points 55904

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.

11voto

bjnord Points 964

Je vous recommande d'ajouter une préférence "Fréquence de synchronisation" dans les paramètres de votre application, afin que l'utilisateur puisse se connecter à l'application. utilisateur a son mot à dire pour équilibrer la fraîcheur des données et l'utilisation de la batterie. Chaque utilisateur a des priorités différentes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X