Vreet batterij in mobiele ontwikkeling: wat het is, oorzaken en bestrijdingsmethoden

Auteur: IT Sectr Gepubliceerd: 2026-07-28 Leestijd: 10 min

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

  • WakeLock — de belangrijkste oorzaak van energielekken als het niet op tijd wordt vrijgegeven
  • Netwerkverzoeken zonder bundeling dwingen de radiomodule om constant te werken
  • Locatie met hoge nauwkeurigheid verbruikt 10 keer meer energie dan bij benadering
  • WorkManager — de standaard API voor achtergrondtaken rekening houdend met de batterijstatus
  • Profileren via Battery Historian en Energy Profiler is verplicht voor release

Wat betekent „vreet batterij” in mobiele apps?

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.

Hoe wordt batterijverbruik gemeten?

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.

kotlin
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.

Belangrijkste oorzaken van verhoogd energieverbruik

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.

  • Animaties en rendering zonder hardwareversnelling belasten de GPU
  • Sensoren (versnellingsmeter, gyroscoop) op de achtergrond zonder noodzaak
  • Bluetooth scannen met hoge frequentie voor apparaatdetectie
  • Cachen van grote hoeveelheden gegevens op SD-kaart zonder rekening te houden met de batterijstatus

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.

Hoe diagnoseer je batterijproblemen?

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.

bash
# 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

Analyse in iOS

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.

Optimalisatiemethoden voor energieverbruik

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.

kotlin
val workRequest = OneTimeWorkRequestBuilder<SyncWorker>()
    .setConstraints(
        Constraints.Builder()
            .setRequiresCharging(true)
            .setRequiresBatteryNotLow(true)
            .setRequiresNetworkType(NetworkType.CONNECTED)
            .build()
    )
    .build()
WorkManager.getInstance(this).enqueue(workRequest)

Netwerkverzoeken bundelen

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.

  • Retrofit met OkHttp ondersteunt bundeling via Interceptor
  • Firebase Cloud Messaging maakt het mogelijk meldingen in één sessie te combineren
  • GraphQL — vervanging voor REST, waar één query meerdere vervangt

Locatiewerk optimaliseren

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.

Tools voor energieverbruiksanalyse

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.

ToolPlatformStatistieken
Battery HistorianAndroidWakeLock, Netwerk, GPS, CPU, Display
Energy ProfilerAndroid StudioCPU, Netwerk, GPS, Radio in realtime
Energy LogiOS (Xcode)CPU, Netwerk, GPU, Display, Locatie
PerfDogiOS + AndroidEnergie, 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

Welke app trekt de batterij het meest leeg?

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.

Heeft de verversingsfrequentie van het scherm invloed op het batterijverbruik?

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.

Hoe beïnvloedt GPS het energieverbruik?

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.

Moet ik achtergrondapps handmatig sluiten?

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).

Hoe kom ik erachter welke app de batterij leegtrekt op Android?

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

  • Verhoogd batterijverbruik — abnormaal energieverbruik van de app, wat leidt tot snelle ontlading van het apparaat en een slechte gebruikerservaring
  • Belangrijkste oorzaken: WakeLock, frequente netwerkverzoeken, GPS met hoge nauwkeurigheid, niet-geoptimaliseerde animaties en achtergrondservices
  • WakeLock — het gevaarlijkste mechanisme; geef het altijd vrij in een try/finally-blok of gebruik WakeLock.acquire met een time-out
  • WorkManager — de door Google aanbevolen standaard API voor achtergrondtaken rekening houdend met de batterij- en netwerkstatus
  • Verzoeken bundelen vermindert het energieverbruik van de radiomodule met 30-50% door het aantal modusovergangen te verminderen
  • Diagnose via Battery Historian, Energy Profiler en Xcode Energy Organiser is verplicht voor elke release
  • Profiel het energieverbruik op fysieke apparaten — emulators geven geen nauwkeurige batterijmetingen

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.

Bespreek het project

Lees ook