La consommation excessive de batterie — l'une des plaintes les plus fréquentes des utilisateurs d'applications mobiles. L'application commence à consommer une quantité anormale d'énergie, provoquant une décharge rapide de l'appareil même en arrière-plan. Selon Google I/O 2023, jusqu'à 30% des applications du Google Play ont des problèmes de consommation d'énergie qui affectent directement la fidélisation des utilisateurs. Dans cet article, nous analyserons les causes, le diagnostic et les méthodes d'optimisation.
Points clés
La consommation excessive de batterie est un état dans lequel une application mobile consomme significativement plus d'énergie que prévu dans des scénarios d'utilisation typiques. L'utilisateur remarque que l'appareil se décharge 20 à 30% plus rapidement après l'installation ou la mise à jour d'une application.
Les systèmes d'exploitation mobiles modernes — Android et iOS — disposent de mécanismes intégrés de contrôle de la consommation d'énergie. Android utilise Battery Optimization et iOS utilise Background Modes. Cependant, une mauvaise utilisation des API peut contourner ces mécanismes.
Selon une étude de Purdue University (2021), environ 60% des applications consomment de l'énergie pour des tâches d'arrière-plan sans nécessité évidente. Cela est particulièrement courant dans les applications avec publicités, analyses et connexions réseau persistantes.
La consommation d'énergie est mesurée en mA·h (milliampères-heures). Android fournit des données via l'API BatteryManager, qui suit la consommation de chaque composant : CPU, module radio, GPS, écran et capteurs.
val batteryManager = getSystemService(Context.BATTERY_SERVICE) as BatteryManager
val chargeCounter = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER)
val capacity = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY)
// chargeCounter / capacity * 100 = current charge percentage
L'API BatteryManager permet d'obtenir la charge actuelle et la capacité de la batterie, mais ne fournit pas de détails par application — des utilitaires système sont nécessaires pour cela.
WakeLock — le mécanisme le plus dangereux pour la batterie. Si une application maintient un WakeLock sans le libérer, l'appareil n'entre pas en mode veille. Chaque heure de maintien d'un WakeLock consomme environ 50-80 mA·h.
Les requêtes réseau sans regroupement sont la deuxième cause la plus fréquente. Chaque fois qu'une application établit une connexion réseau, le module radio passe du mode d'économie d'énergie au mode actif. Des requêtes courtes fréquentes à intervalles de moins de 5 minutes maintiennent le module radio constamment actif.
La localisation GPS de haute précision (GPS_PROVIDER) consomme 10 à 15 fois plus d'énergie que la localisation approximative (NETWORK_PROVIDER). Les mises à jour constantes de localisation en arrière-plan sont l'une des plaintes les plus courantes des utilisateurs.
Selon Android Developers Blog, une application moyenne consomme environ 15% de la consommation totale de batterie de l'appareil. Dépasser ce niveau nécessite un audit obligatoire de la consommation d'énergie.
Battery Historian — l'outil officiel de Google pour l'analyse de la consommation d'énergie. Il prend des dumps BatteryStats depuis ADB et visualise la consommation par composant : CPU, Réseau, GPS, WakeLock et Écran.
Pour créer un dump, exécutez la commande : adb shell dumpsys batterystats. Après avoir collecté des données pendant 2 à 3 heures d'utilisation normale, vous pouvez télécharger le rapport dans Battery Historian pour analyse.
Android Energy Profiler dans Android Studio suit la consommation d'énergie en temps réel. Il montre la consommation du CPU, du Réseau, du GPS et de l'Écran pour chaque opération de l'application.
# Reset battery stats before test
adb shell dumpsys batterystats --reset
# Use the app for 2-3 hours
# Export dump for Battery Historian
adb shell dumpsys batterystats > batterystats_dump.txt
Pour iOS, on utilise Energy Log via Xcode Instruments. Il collecte les données de consommation d'énergie ventilées par module : CPU, Réseau, GPU, Écran, Localisation. Temps de lecture : 15 à 30 minutes par analyse de session.
Sur un appareil iOS physique, les statistiques de consommation d'énergie sont également affichées dans Settings > Battery. Si une application figure dans le top 10 de la consommation, c'est un signal d'optimisation.
WorkManager — l'API standard pour les tâches d'arrière-plan qui prend en compte l'état de la batterie, du réseau et le mode Doze. Elle garantit l'exécution des tâches dans des conditions optimales plutôt qu'immédiatement, économisant jusqu'à 40% d'énergie sur les opérations en arrière-plan.
val workRequest = OneTimeWorkRequestBuilder<SyncWorker>()
.setConstraints(
Constraints.Builder()
.setRequiresCharging(true)
.setRequiresBatteryNotLow(true)
.setRequiresNetworkType(NetworkType.CONNECTED)
.build()
)
.build()
WorkManager.getInstance(this).enqueue(workRequest)
Le regroupement de requêtes — la combinaison de plusieurs opérations réseau en une seule session de communication. Au lieu de 10 requêtes séparées, l'application fait une requête groupée, réduisant le temps d'activation du module radio de 30 secondes à 2-3 secondes.
FusedLocationProviderClient de Google Play Services sélectionne la source de localisation optimale en fonction de la précision requise. Pour les tâches d'arrière-plan, utilisez la priorité PRIORITY_BALANCED_POWER_ACCURACY — cela offre une précision allant jusqu'à 100 mètres avec une consommation minimale de la batterie.
Sous iOS, utilisez Significant Location Change au lieu de Continuous Location. Cela permet de recevoir des mises à jour uniquement lors de mouvements significatifs (plus de 500 mètres), plutôt que toutes les quelques secondes.
Android Battery Historian — l'outil web de Google pour la visualisation des données BatteryStats. Prend en charge l'importation de dumps, les composants codés par couleur et la comparaison de sessions. Métriques clés : temps de maintien du WakeLock, activité du module radio, sessions GPS.
Xcode Energy Organizer collecte les données de consommation d'énergie des utilisateurs en production via TestFlight et l'App Store. Vous obtenez un rapport sur la consommation moyenne sur différents appareils et versions d'iOS. Cela permet de suivre les régressions après les mises à jour.
PerfDog (Tencent) — un outil de test de performance multiplateforme qui inclut des mesures de consommation d'énergie. Prend en charge iOS et Android, permet d'enregistrer des métriques à 1-10 images par seconde.
| Outil | Plateforme | Métriques |
|---|---|---|
| Battery Historian | Android | WakeLock, Réseau, GPS, CPU, Écran |
| Energy Profiler | Android Studio | CPU, Réseau, GPS, Radio en temps réel |
| Energy Log | iOS (Xcode) | CPU, Réseau, GPU, Écran, Localisation |
| PerfDog | iOS + Android | Énergie, FPS, CPU, Mémoire (tous ensemble) |
Selon Apple WWDC 2023, l'utilisation d'Energy Organizer réduit la consommation d'énergie moyenne des applications de 15 à 25% en identifiant et en corrigeant les régressions avant la sortie sur l'App Store.
Foire aux questions
Les réseaux sociaux et les messageries (Facebook, Instagram, WhatsApp, Telegram) sont traditionnellement en tête de la consommation d'énergie. Ils synchronisent constamment les données, mettent à jour le fil d'actualité, reçoivent des notifications push et utilisent le GPS. En deuxième position viennent les jeux avec graphismes 3D qui sollicitent simultanément le GPU et le CPU, consommant jusqu'à 400-600 mA·h par heure de jeu actif.
Oui, directement. L'écran est le composant le plus énergivore d'un smartphone. L'augmentation de la fréquence de 60 Hz à 120 Hz accroît la consommation d'énergie de l'écran de 30 à 50%. Cependant, les écrans modernes avec technologie LTPO changent dynamiquement la fréquence de 1 à 120 Hz en fonction du contenu, réduisant ainsi l'impact sur la batterie.
Le GPS de haute précision consomme environ 200-300 mA·h par heure de fonctionnement continu. À titre de comparaison, la détermination de la localisation par Wi-Fi et antennes relais (NETWORK_PROVIDER) ne consomme que 20-40 mA·h sur la même période. Utilisez l'API Geofencing pour activer le GPS uniquement lors de l'entrée dans une zone définie.
Non. Les systèmes d'exploitation modernes (Android et iOS) optimisent eux-mêmes les processus d'arrière-plan. Forcer la fermeture d'une application et la redémarrer consomme plus d'énergie que si l'application restait en arrière-plan. L'exception concerne les applications qui causent explicitement des problèmes (déterminé via les statistiques de batterie dans les paramètres).
Ouvrez Settings > Battery > Battery Usage. Le système affichera une liste des applications avec leur pourcentage de consommation. Pour une analyse détaillée, utilisez ADB : adb shell dumpsys batterystats et chargez le dump dans Battery Historian. Cela montrera non seulement la consommation totale mais aussi une répartition par composants (WakeLock, Réseau, GPS).
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi