Verhoogd batterijverbruik — een van de meest voorkomende klachten van gebruikers van mobiele apps. De app begint abnormaal veel energie te verbruiken, waardoor het apparaat snel leegloopt, zelfs in de achtergrondmodus. Volgens Google I/O 2023 heeft tot 30% van de apps in Google Play problemen met energieverbruik, wat direct invloed heeft op het behoud van gebruikers. In dit artikel bespreken we de oorzaken, diagnose en optimalisatiemethoden.
Belangrijkste punten
Verhoogd batterijverbruik — een toestand waarin een mobiele app aanzienlijk meer energie verbruikt dan verwacht in een typisch gebruiksscenario. De gebruiker merkt dat het apparaat 20-30% sneller leegloopt dan normaal na installatie of update van de app.
Moderne mobiele besturingssystemen — Android en iOS — hebben ingebouwde mechanismen voor energiebeheer. Android gebruikt Battery Optimization en iOS gebruikt Background Modes. Maar verkeerd gebruik van API’s kan deze mechanismen omzeilen.
Volgens onderzoek van Purdue University (2021) verbruikt ongeveer 60% van de apps energie voor achtergrondtaken zonder duidelijke noodzaak. Dit is vooral kenmerkend voor apps met advertenties, analyses en permanente netwerkverbindingen.
Energieverbruik wordt gemeten in mA·h (milliampère-uur). Android biedt gegevens via de BatteryManager API, die het verbruik van elke component bijhoudt: CPU, radiomodule, GPS, display en sensoren.
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 = huidig laadpercentage
BatteryManager API maakt het mogelijk het huidige laadpercentage en de batterijcapaciteit te verkrijgen, maar biedt geen details per app — daarvoor zijn systeemhulpprogramma’s nodig.
WakeLock — het gevaarlijkste mechanisme voor de batterij. Als een app WakeLock vasthoudt zonder het vrij te geven, gaat het apparaat niet in slaapmodus. Elk uur dat WakeLock wordt vastgehouden, verbruikt ongeveer 50-80 mA·h.
Netwerkverzoeken zonder bundeling — de tweede meest voorkomende oorzaak. Elke keer dat een app een netwerkverbinding maakt, schakelt de radiomodule van energiebesparende modus naar actieve modus. Frequente korte verzoeken met een interval van minder dan 5 minuten houden de radiomodule constant actief.
Het bepalen van de GPS-locatie met hoge nauwkeurigheid (GPS_PROVIDER) verbruikt 10-15 keer meer energie dan benaderende bepaling (NETWORK_PROVIDER). Continue locatie-updates op de achtergrond is een van de belangrijkste klachten van gebruikers.
Volgens de Android Developers Blog verbruikt een gemiddelde app ongeveer 15% van het totale batterijverbruik van het apparaat. Overschrijding van dit niveau vereist een verplichte energie-audit.
Battery Historian — de officiële Google-tool voor energieverbruiksanalyse. Het neemt een BatteryStats-dump van ADB en visualiseert het verbruik per component: CPU, Netwerk, GPS, WakeLock en display.
Om een dump te maken, voer je het commando uit: adb shell dumpsys batterystats. Na het verzamelen van gegevens gedurende 2-3 uur normaal gebruik, kun je het rapport laden in Battery Historian voor analyse.
Android Energy Profiler in Android Studio volgt het energieverbruik in realtime. Het toont het verbruik van CPU, Netwerk, GPS en display voor elke bewerking van de app.
# Reset batterijstatistieken voor test
adb shell dumpsys batterystats --reset
# Gebruik de app gedurende 2-3 uur
# Exporteer dump voor Battery Historian
adb shell dumpsys batterystats > batterystats_dump.txt
Voor iOS wordt Energy Log gebruikt via Xcode — Instruments. Het verzamelt energieverbruiksgegevens uitgesplitst naar modules: CPU, Netwerk, GPU, Display, Locatie. Leestijd: 15-30 minuten voor analyse van één sessie.
Op een fysiek iOS-apparaat worden energieverbruiksstatistieken ook weergegeven in Instellingen > Batterij. Als de app in de top 10 van verbruik staat — is dat een signaal voor optimalisatie.
WorkManager — de standaard API voor achtergrondtaken die rekening houdt met de batterijstatus, netwerkstatus en Doze-modus. Het garandeert uitvoering van de taak onder optimale omstandigheden, niet onmiddellijk, wat tot 40% energie bespaart bij achtergrondbewerkingen.
val workRequest = OneTimeWorkRequestBuilder<SyncWorker>()
.setConstraints(
Constraints.Builder()
.setRequiresCharging(true)
.setRequiresBatteryNotLow(true)
.setRequiresNetworkType(NetworkType.CONNECTED)
.build()
)
.build()
WorkManager.getInstance(this).enqueue(workRequest)
Verzoeken bundelen — het combineren van meerdere netwerkbewerkingen in één communicatiesessie. In plaats van 10 afzonderlijke verzoeken voert de app één gebundeld verzoek uit, waardoor de activiteitstijd van de radiomodule wordt verminderd van 30 seconden naar 2-3 seconden.
FusedLocationProviderClient van Google Play Services kiest de optimale locatiebron op basis van de vereiste nauwkeurigheid. Gebruik voor achtergrondtaken de prioriteit PRIORITY_BALANCED_POWER_ACCURACY — dit geeft een nauwkeurigheid tot 100 meter met minimaal batterijverbruik.
Gebruik in iOS Significant Location Change in plaats van Continuous Location. Hiermee ontvang je alleen updates bij significante verplaatsing (meer dan 500 meter), niet elke paar seconden.
Android Battery Historian — de webtool van Google voor het visualiseren van BatteryStats-gegevens. Ondersteunt het importeren van dumps, kleurcodering van componenten en het vergelijken van sessies. Belangrijkste statistieken: WakeLock-duur, radiomodule-activiteit, GPS-sessies.
Xcode Energy Organizer verzamelt energieverbruiksgegevens van productiegebruikers via TestFlight en de App Store. Je ontvangt een rapport over het gemiddelde verbruik op verschillende apparaten en iOS-versies. Hiermee kun je regressies na updates volgen.
PerfDog (Tencent) — een cross-platform tool voor prestatietests, inclusief energieverbruiksmetingen. Ondersteunt iOS en Android, maakt het mogelijk indicatoren op te nemen met een frequentie van 1-10 frames per seconde.
| Tool | Platform | Statistieken |
|---|---|---|
| Battery Historian | Android | WakeLock, Netwerk, GPS, CPU, Display |
| Energy Profiler | Android Studio | CPU, Netwerk, GPS, Radio in realtime |
| Energy Log | iOS (Xcode) | CPU, Netwerk, GPU, Display, Locatie |
| PerfDog | iOS + Android | Energie, FPS, CPU, Geheugen (alles samen) |
Volgens Apple WWDC 2023 maakt het gebruik van Energy Organiser het mogelijk het gemiddelde energieverbruik van apps met 15-25% te verminderen door regressies te identificeren en te verhelpen voordat de update in de App Store verschijnt.
Veelgestelde vragen
Sociale netwerken en messengers (Facebook, Instagram, WhatsApp, Telegram) lopen traditioneel voorop in energieverbruik. Ze synchroniseren constant gegevens, vernieuwen de feed, ontvangen pushmeldingen en gebruiken GPS. Op de tweede plaats — games met 3D-graphics die zowel GPU als CPU belasten, tot 400-600 mA·h per uur actief spel verbruikend.
Ja, direct. Het scherm — de meest energie-intensieve component van een smartphone. Verhoging van de frequentie van 60 Hz naar 120 Hz verhoogt het energieverbruik van het display met 30-50%. Moderne displays met LTPO-technologie veranderen echter dynamisch de frequentie van 1 tot 120 Hz, afhankelijk van de inhoud, wat de impact op de batterij vermindert.
GPS met hoge nauwkeurigheid verbruikt ongeveer 200-300 mA·h per uur continu gebruik. Ter vergelijking, locatiebepaling via Wi-Fi en mobiele zendmasten (NETWORK_PROVIDER) verbruikt slechts 20-40 mA·h in dezelfde periode. Gebruik de Geofencing API om GPS alleen in te schakelen bij het betreden van een specifiek gebied.
Niet doen. Moderne besturingssystemen (Android en iOS) optimaliseren achtergrondprocessen zelf. Het geforceerd sluiten van een app en opnieuw opstarten verbruikt meer energie dan wanneer de app op de achtergrond was gebleven. Uitzondering — apps die expliciet problemen veroorzaken (bepaald via batterijstatistieken in instellingen).
Open Instellingen > Batterij > Batterijverbruik. Het systeem toont een lijst met apps met het verbruikspercentage. Gebruik voor gedetailleerde analyse ADB: adb shell dumpsys batterystats en laad de dump in Battery Historian. Dit toont niet alleen het totale verbruik, maar ook een uitsplitsing per component (WakeLock, Netwerk, GPS).
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook