Meilleures Pratiques Pour Télécharger Des Données Sans Drainer La Batterie

 L'utilisation des radios sans fil pour transférer des données est une cause importante de l'épuisement de la batterie. Les radios mobiles et Wi-Fi consomment beaucoup d'énergie, non seulement pour transférer des données, mais également pour alimenter et entretenir les connexions de données réseau.La synchronisation et l’approche que vous utilisez pour télécharger les données peuvent avoir un effet important sur la durée de vie de la batterie. Par conséquent, pour minimiser l’épuisement de la batterie associé à l’activité du réseau, il est essentiel de comprendre les effets de votre modèle de connectivité sur le matériel radio sous-jacent.

Remarque Pour plus de détails sur la manière de réduire l'impact des connexions réseau et des transferts de données, reportez-vous à la section «Réduction du drain de la batterie réseau» à l'adresse developer.android.com/training/performance/battery/network. 

Une radio sans fil cellulaire transmettant ou recevant des données consomme beaucoup d’énergie, tandis que s’allumer pour fournir la connectivité introduit une latence. Par conséquent, la radio effectue la transition entre différents modes d'alimentation afin de conserver l'énergie et de minimiser la latence.

Pour une radio de réseau 3G typique impliquant trois états d’énergie:

  • Pleine puissance - Utilisé lorsqu'une connexion transfère activement des données.
  • Faible puissance: activé peu de temps après (environ 5 secondes) après la fin du transfert. Il utilise environ 50% de la puissance d'une connexion complète, mais a amélioré la latence de démarrage par rapport au mode veille. Veille: état de consommation d'énergie minimale, activé après une période raisonnable (environ 15 secondes) au cours de laquelle aucun trafic réseau ne s'est produit

Chaque fois que vous créez une nouvelle connexion ou téléchargez des données supplémentaires, vous risquez de sortir la radio sans fil du mode veille et / ou de prolonger la durée de temps passée en mode pleine et faible consommation.Pour utiliser un exemple classique, la création de connexions fréquentes et éphémères téléchargeant de petites quantités de données peut avoir un impact négatif considérable sur la batterie. Le transfert de données toutes les 15 secondes permet de garder la radio du réseau à pleine puissance en permanence. La solution consiste à réduire la fréquence et la taille de vos transferts de données. Vous pouvez utiliser les techniques suivantes pour minimiser l’impact de la batterie de votre application: 

  • Cachez et compressez les données: évitez de télécharger des données plus souvent que nécessaire en les stockant ou en les mettant en cache localement. Réduisez au minimum la durée des transferts en compressant efficacement les données au niveau de la source du serveur, avant de les transmettre à votre appareil. 
  • Considérez le Wi-Fi par rapport aux connexions au réseau mobile: la radio Wi-Fi peut être nettement moins énergivore que la radio cellulaire du réseau mobile. Pour les fichiers volumineux et lorsque la rapidité n’est pas aussi importante, envisagez de retarder les transferts jusqu’à ce que le périphérique soit connecté en Wi-Fi.  
  • Pref Pré-récupération agressive: plus vous téléchargez de données en une seule connexion, moins la radio devra être alimentée pour pouvoir télécharger plus de données. Cela devra être compensé par le téléchargement de trop de données qui ne seront pas utilisées. 
  • Regroupez vos connexions et vos téléchargements - Plutôt que d’envoyer des données chronologiques telles que les analyses reçues, regroupez-les et programmez-les pour qu’elles soient transmises simultanément avec d’autres connexions, par exemple lors de la régénération de contenu ou de la pré-extraction de données.N'oubliez pas que chaque nouvelle connexion a le potentiel d'alimenter la radio.   
  • Réutilisez les connexions existantes plutôt que d'en créer de nouvelles: utiliser des connexions existantes plutôt que d'en créer de nouvelles pour chaque transfert peut considérablement améliorer les performances du réseau, réduire la latence et permettre au réseau de réagir de manière intelligente aux problèmes de congestion et aux problèmes connexes. 
  • Utilisez des mises à jour lancées par le serveur plutôt que des téléchargements périodiques: chaque fois que vous établissez une connexion, vous allumez éventuellement la radio, même si vous ne finissez pas par télécharger de nouvelles données. Au lieu de procéder à une interrogation régulière, demandez à votre serveur d’informer chaque client du téléchargement de nouvelles données à l’aide de Firebase Cloud Messaging (décrite au chapitre 11). 
  • Planifiez les téléchargements périodiques le moins souvent possible - Lorsque des mises à jour périodiques sont nécessaires. Il est toutefois judicieux de définir une fréquence de rafraîchissement par défaut aussi faible que possible, et non aussi fréquente que possible. Pour les utilisateurs qui souhaitent que leurs mises à jour soient plus fréquentes, indiquez des préférences qui leur permettent de sacrifier la durée de vie de la batterie en échange de fraîcheur.

 Android propose un certain nombre d'API pour vous aider à effectuer des transferts de données de manière efficace, en particulier le planificateur de tâches Android. Cette API vous permet de planifier intelligemment les transferts de données en arrière-plan au sein de votre processus d'application. En tant que service mondial, il peut regrouper et différer les transferts de plusieurs applications, afin de minimiser l'impact global de la batterie.

 Il offre: 

  • Planification de téléchargements uniques ou périodiques
  • retour automatique et échec de réessayer Persistance des transferts programmés entre les redémarrages de l'appareil
  • Planification en fonction du type de connexion réseau et de l'état de charge de l'appareil.

 

Une Introduction Aux Services Internet Et À L’informatique En Cloud

 Les logiciels en tant que services (SaaS) et l'informatique en nuage gagnent en popularité à mesure que les entreprises réduisent les coûts indirects liés à l'installation, la mise à niveau et la maintenance de leur propre matériel. Le résultat est une gamme de services Internet riches et de ressources cloud avec lesquels vous pouvez créer et améliorer des applications mobiles.Une introduction aux services Internet et au cloud computingL'idée d'utiliser un niveau intermédiaire pour réduire la charge côté client n'est pas nouvelle. Heureusement, il existe de nombreuses options basées sur Internet pour fournir à vos applications le niveau de service dont vous avez besoin. Le grand nombre de services Internet disponibles rend impossible de les énumérer tous ici (sans parler de les regarder en détail), mais la liste suivante répertorie certains des services Internet les plus évolués et les plus courants actuellement disponibles. Android étant principalement développé par Google, les offres de la plate-forme en nuage de Google sont particulièrement bien prises en charge, comme le résume la section suivante:   

  • Services de calcul sur plate-forme Google Cloud: divers services pour l'exécution de serveurs en nuage, notamment Compute Engine pour l'exécution de charges de travail à grande échelle sur des machines virtuelles, la plate-forme App Engine pour la création de dorsaux mobiles évolutifs et Kubernetes Engine pour l'exécution.conteneurs.   
  • Google Cloud Platform Storage et BigQuery: gamme de produits pour le stockage de données dans le cloud, notamment Cloud Storage pour le stockage d'objets avec mise en cache globale, Cloud Spanner et Cloud SQL pour les bases de données relationnelles prenant en charge les requêtes SQL, Cloud Bigtable pour les bases de données NoSQL extrêmement évolutives et Cloud Datastore for NoSQL, bases de données sans schéma (conçues pour stocker des données non relationnelles). Ils proposent également BigQuery, un entrepôt de données d’entreprise à faibles coûts entièrement géré pour l’analyse de données.    API API Google Machine Learning: Google propose une gamme d’API Machine Intelligence basées sur ses capacités d’apprentissage automatique. Cela inclut une API Vision capable de comprendre le contenu des images, une API Speech pour la reconnaissance vocale avancée, une API en langage naturel qui tire des informations d'un texte non structuré et une API de traduction pour la traduction de texte par programme en temps réel.   
  • Amazon Web Services: Amazon propose une gamme de services basés sur le cloud, y compris ungamme de services pour l'informatique en nuage et le stockage, y compris la solution de stockage distribué (S3) et Elastic Compute Cloud (EC2).

Une exploration plus détaillée de ces produits est hors de portée pour ce livre. Toutefois, le chapitre 11 fournit des informations supplémentaires sur l'utilisation de Firebase Cloud Messaging pour remplacer l'interrogation côté client par des mises à jour pilotées par le serveur.