How do I analyze battery usage?

Mål din apps strømforbrug: En komplet guide

18/04/2024

Rating: 4.14 (5076 votes)

I en verden, hvor smartphones er en uundværlig del af vores hverdag, er batterilevetid blevet en af de mest kritiske faktorer for brugeroplevelsen. En app, der dræner batteriet, bliver hurtigt afinstalleret, uanset hvor fantastisk dens funktionalitet er. For Android-udviklere er det derfor ikke længere en luksus, men en nødvendighed at forstå og optimere applikationens strømforbrug. Denne artikel fungerer som en dybdegående guide til, hvordan du kan måle, analysere og i sidste ende reducere din apps indvirkning på enhedens batteri ved hjælp af moderne værktøjer og teknikker.

How does Android Studio Hedgehog monitor power consumption?
Starting in Android Studio Hedgehog, the Power Profiler shows power consumption on devices. You can view this new data in the On Device Power Rails Monitor (ODPM). It segments the information by subsystems called "Power Rails". See Profileable power rails for a list of supported sub-systems.
Indholdsfortegnelse

Hvorfor er strømforbrug så vigtigt?

Før vi dykker ned i de tekniske detaljer, er det vigtigt at forstå konsekvenserne af et højt strømforbrug. Det handler om mere end bare et fladt batteri.

  • Brugerfastholdelse: Den mest åbenlyse grund. Brugere tjekker jævnligt, hvilke apps der bruger mest strøm, og de tøver ikke med at fjerne de værste syndere. En batterieffektiv app er en app, der bliver på enheden.
  • Enhedens ydeevne og sundhed: Højt strømforbrug er ofte synonymt med høj CPU- og GPU-aktivitet. Dette genererer varme, som kan føre til termisk throttling, hvor enheden bevidst sænker sin ydeevne for at køle ned. Dette resulterer i en langsom og hakkende brugeroplevelse.
  • Anmeldelser og synlighed: Dårlig ydeevne og batteridræn fører uundgåeligt til dårlige anmeldelser i Google Play Store. Android Vitals overvåger desuden apps for dårlig opførsel, og apps med højt strømforbrug kan blive nedprioriteret i butikken.

At optimere strømforbruget er altså en direkte investering i din apps succes og omdømme.

Forståelse af strømforbrug på komponentniveau

En enheds samlede strømforbrug er summen af forbruget fra dens individuelle hardwarekomponenter: CPU, GPU, skærm, GPS, Wi-Fi, mobilnetværk og diverse sensorer. En applikations strømforbrug kan teoretisk beregnes ved at identificere, hvor meget hver komponent bruges af appen på et givet tidspunkt. Modellen kan simplificeres som:

P(t) = Σ (Strømforbrug for komponent i * Anvendelse af app j på komponent i)

Selvom det er komplekst at måle dette manuelt, giver det en grundlæggende forståelse for, hvor vi skal lede efter optimeringsmuligheder. Heldigvis giver moderne værktøjer os mulighed for at se disse data uden komplekse beregninger.

How can I check the power consumption of my application?
First, if you want to check the power consumption of your application. I suggest you to read batterystat.txt file by finding uid of your application. For the ‘cannot find end time’ problem, I've check the source code. It is exactly the same as this answer: stackoverflow.com/questions/34487749/… If possible, could you paste the txt file here?

Android Studio Energy Profiler: Din bedste ven

Siden Android Studio Hedgehog er Energy Profiler blevet et utroligt kraftfuldt værktøj, der giver udviklere et visuelt indblik i en applikations strømforbrug i realtid. Det er det bedste sted at starte din optimeringsrejse.

Energy Profiler viser data fra enhedens On-Device Power Monitor (ODPM), som er tilgængelig på Android 10 (API-niveau 29) og nyere, især på Pixel 6 og nyere enheder. Dataene er opdelt i såkaldte 'Power Rails' (Strømskinner), som repræsenterer forskellige hardwaresubsystemer.

Hvad er Power Rails?

Power Rails giver en detaljeret opdeling af, hvor strømmen forbruges. Nedenstående tabel viser en oversigt over de mest almindelige rails, du kan overvåge. Bemærk, at tilgængeligheden kan variere fra enhed til enhed.

How do you calculate application power consumption?
C. Application power analysis The model described so far has used subsystem usage values for the entire operating system. By extension, we replace these values with subsystem usage statistics of a given application or process, and we calculate per-application power consumption. That is, for a given application j : P (t) = C i U j (t). (3) i i
Navn på StrømskinneBeskrivelse
CPU largeStrøm forbrugt af de store, højtydende CPU-kerner.
CPU smallStrøm forbrugt af de små, energieffektive CPU-kerner.
CPU midStrøm forbrugt af mellemstørrelse CPU-kerner (hvis relevant).
DisplayStrøm forbrugt af skærmen.
GPUStrøm forbrugt af grafikprocessoren.
WLAN (Wi-Fi)Strøm forbrugt af Wi-Fi-chippen.
Mobile RadioStrøm forbrugt af mobilnetværkschippen.
GPSStrøm forbrugt af GPS-sensoren.
CameraStrøm forbrugt af kamerasensoren.

For enheder, der ikke understøtter ODPM, kan Energy Profiler stadig vise estimerede data baseret på andre kilder som batterimåleren.

Praktisk eksempel: Optimering af netværkskald

Lad os forestille os, at du udvikler en app, der downloader flere billeder fra et netværk. Du kan implementere dette på to måder:

  1. Situation A: Appen laver et separat netværkskald for hvert enkelt billede.
  2. Situation B: Appen laver ét stort netværkskald, der henter alle billeder samlet (eller i batches).

Ved at bruge Energy Profiler vil du tydeligt kunne se forskellen. I Situation A vil du se mange små, gentagne spidser i strømforbruget på WLAN-skinnen. Hver gang radioen skal vækkes, forhandle en forbindelse og overføre data, bruges der en betydelig mængde strøm, selv for små datamængder. I Situation B vil du se en enkelt, længere periode med højt forbrug, men den samlede mængde energi brugt vil ofte være markant lavere, fordi radioen kun skal aktiveres én gang. Dette simple eksempel demonstrerer, hvordan visuel feedback fra profileren kan guide dig mod mere energieffektive designvalg.

Manuel måling for dybdegående analyse

Selvom Energy Profiler er fantastisk, kan der være situationer, hvor du har brug for endnu mere præcise eller specifikke målinger. Her kommer manuel måling ind i billedet. Dette kræver eksternt udstyr som en strømforsyning eller et specialiseret strømmonitoreringsværktøj (f.eks. fra Monsoon). Princippet er simpelt: Mål strømforbruget med en komponent tændt og derefter slukket. Forskellen er komponentens forbrug.

How do I determine individual component power consumption?
You can determine individual component power consumption by comparing the current drawn by the device when the component is in the desired state (such as on, active, scanning) and when the component is off.

For at opnå pålidelige resultater er det afgørende at skabe et kontrolleret testmiljø:

  • Frakobl alle strømkilder: Enheden må kun trække strøm fra dit måleudstyr. Frakobl USB-kablet, da det kan levere strøm og forvrænge resultaterne. Brug ADB over Wi-Fi til at kommunikere med enheden.
  • Sæt enheden i flytilstand: Medmindre du specifikt måler netværksradioer, skal du aktivere flytilstand for at forhindre uforudsigelig aktivitet fra mobil-, Wi-Fi- og Bluetooth-radioer.
  • Kontrollér systemets dvaletilstand: Systemet kan gå i dvale, selv med skærmen slukket, hvilket påvirker målingerne. Brug en midlertidig wakelock for at forhindre dette. Du kan gøre det via ADB: adb shell "echo temporary > /sys/power/wake_lock". Husk at fjerne den igen bagefter med wake_unlock.
  • Lås CPU-hastigheden: Moderne CPU'er ændrer konstant deres hastighed (frekvens) for at spare strøm. Dette skaber variation i dine målinger. Du kan tvinge CPU'en til at køre med en konstant hastighed ved hjælp af `userspace governor` via ADB.

Andre Værktøjer: Battery Historian

Mens Energy Profiler er ideel til realtidsanalyse, er Battery Historian et værktøj fra Google, der er designet til at analysere batteriforbrug over en længere periode. Det tager en `bugreport`-fil fra din enhed og genererer en detaljeret, interaktiv visualisering af systemhændelser relateret til strømforbrug.

Med Battery Historian kan du se:

  • Hvornår og hvor længe wakelocks holdes.
  • Hvordan netværksaktivitet korrelerer med batterifald.
  • JobScheduler-aktivitet.
  • App-specifik statistik over CPU-brug.

Det er et fremragende værktøj til at finde skjulte batterisyndere, især dem, der opstår i baggrunden over tid.

Ofte Stillede Spørgsmål (FAQ)

Hvad er de største syndere for batteriforbrug i apps?
Generelt er de tre største syndere: 1) Skærmen, især ved høj lysstyrke. 2) CPU/GPU, når der udføres intensive beregninger eller rendering. 3) Netværksradioer som GPS, mobilnetværk og Wi-Fi, især når de bruges hyppigt eller over lang tid.
Kan jeg måle strømforbrug på en emulator?
Nej, det er ikke muligt at få meningsfulde data om strømforbrug fra en Android-emulator. Emulatoren simulerer softwaren, men har ikke de fysiske hardwarekomponenter (som en rigtig CPU, batteri eller GPS-chip), hvis strømforbrug skal måles. Måling skal altid udføres på en fysisk enhed.
Hvad er en 'wakelock', og hvorfor er den vigtig?
En wakelock er en mekanisme, som en app kan bruge til at forhindre enheden i at gå i dvaletilstand. En 'partial wakelock' holder CPU'en vågen, selvom skærmen er slukket. Dette er nødvendigt for apps, der udfører baggrundsarbejde (f.eks. musikafspillere), men det er også en af de mest almindelige årsager til unødvendigt batteridræn, hvis den ikke frigives korrekt, når arbejdet er færdigt.
Hvordan kan jeg reducere min apps netværksforbrug?
Der er flere strategier: 1) Batch dine anmodninger: Saml flere små netværkskald i ét større kald. 2) Brug effektive dataformater: Formater som Protocol Buffers er ofte mere kompakte end JSON. 3) Cache data aggressivt: Undgå at hente de samme data igen og igen. 4) Brug WorkManager: Planlæg ikke-presserende baggrundsnetværksopgaver, så systemet kan udføre dem på et batterieffektivt tidspunkt (f.eks. når enheden oplader og er på Wi-Fi).

Konklusion

Optimering af strømforbrug er en essentiel disciplin for den moderne Android-udvikler. Ved at integrere værktøjer som Android Studio Energy Profiler og Battery Historian i din udviklingsproces kan du få den nødvendige indsigt til at træffe informerede beslutninger. Start med at måle, identificere de største forbrugere i din app, og implementer derefter målrettede forbedringer. Dine brugere – og deres batterier – vil takke dig for det.

Hvis du vil læse andre artikler, der ligner Mål din apps strømforbrug: En komplet guide, kan du besøge kategorien Teknologi.

Go up