Ждере батерију у мобилном развоју: шта је то, узроци и методе борбе

Аутор: IT Sectr Објављено: 2026-07-28 Време читања: 10 мин

Повећана потрошња батерије — једна од најчешћих жалби корисника мобилних апликација. Апликација почиње да троши аномално много енергије, изазивајући брзо пражњење уређаја чак и у позадинском режиму. Према Google I/O 2023, до 30% апликација у Google Play-у има проблеме са потрошњом енергије, што директно утиче на задржавање корисника. У овом чланку ћемо размотрити узроке, дијагностику и методе оптимизације.

Главно

  • WakeLock — главни узрок цурења енергије ако није благовремено ослобођен
  • Мрежни захтеви без груписања приморавају радио-модул да стално ради
  • Локација са високом прецизношћу троши 10 пута више енергије од приближне
  • WorkManager — стандардни API за позадинске задатке са уважавањем стања батерије
  • Профилисање путем Battery Historian-а и Energy Profiler-а обавезно пре објављивања

Шта значи „ждере батерију“ у мобилним апликацијама?

Повећана потрошња батерије — стање у којем мобилна апликација троши значајно више енергије него што се очекује у типичном сценарију коришћења. Корисник примећује да се уређај празни 20-30% брже него обично након инсталације или ажурирања апликације.

Савремени мобилни оперативни системи — Android и iOS — имају уграђене механизме контроле потрошње енергије. Android користи Battery Optimization, а iOS — позадинске Background Modes. Међутим, неправилно коришћење API-ја може заобићи ове механизме.

Према истраживању Purdue University (2021), око 60% апликација троши енергију на позадинске задатке без очигледне потребе. Ово је посебно карактеристично за апликације са рекламама, аналитиком и сталним мрежним везама.

Како се мери потрошња батерије?

Потрошња енергије се мери у mA·h (милиампер-сатима). Android пружа податке путем BatteryManager API-ја, који прати потрошњу сваке компоненте: CPU, радио-модул, GPS, дисплеј и сензори.

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 = тренутни проценат напуњености

BatteryManager API омогућава добијање тренутног процента напуњености и капацитета батерије, али не пружа детаље по апликацијама — за то су потребни системски алати.

Главни узроци повећане потрошње енергије

WakeLock — најопаснији механизам за батерију. Ако апликација држи WakeLock без ослобађања, уређај не прелази у режим спавања. Сваки сат држања WakeLock-а троши око 50-80 mA·h.

Мрежни захтеви без груписања — други најчешћи узрок. Сваки пут када апликација успостави мрежну везу, радио-модул прелази из режима уштеде енергије у активни режим. Чести кратки захтеви са интервалом мањим од 5 минута држе радио-модул стално у активном стању.

Одређивање GPS локације са високом прецизношћу (GPS_PROVIDER) троши 10-15 пута више енергије од приближног одређивања (NETWORK_PROVIDER). Константно ажурирање локације у позадини је једна од главних жалби корисника.

  • Анимације и рендеровање без хардверског убрзања оптерећују GPU
  • Сензори (акцелерометар, жироскоп) у позадини без потребе
  • Bluetooth скенирање са високом фреквенцијом тражења уређаја
  • Кеширање великих количина података на SD картицу без уважавања стања батерије

Према Android Developers Blog, просечна апликација троши око 15% укупне потрошње батерије уређаја. Прекорачење овог нивоа захтева обавезну ревизију потрошње енергије.

Како дијагностиковати проблеме са батеријом?

Battery Historian — званични Google алат за анализу потрошње енергије. Прима дамп BatteryStats-а из ADB-а и визуализује потрошњу по компонентама: CPU, Мрежа, GPS, WakeLock и дисплеј.

Да бисте креирали дамп, извршите команду: adb shell dumpsys batterystats. Након прикупљања података током 2-3 сата нормалног коришћења, можете учитати извештај у Battery Historian за анализу.

Android Energy Profiler у Android Studio-у прати потрошњу енергије у реалном времену. Приказује потрошњу CPU-а, мреже, GPS-а и дисплеја за сваку операцију апликације.

bash
# Ресетуј статистику батерије пре теста
adb shell dumpsys batterystats --reset

# Користи апликацију 2-3 сата

# Извези дамп за Battery Historian
adb shell dumpsys batterystats > batterystats_dump.txt

Анализа у iOS-у

За iOS се користи Energy Log путем Xcode-а — Instruments. Прикупља податке о потрошњи енергије разврстане по модулима: CPU, Мрежа, GPU, Display, Локација. Време читања: 15-30 минута за анализу једне сесије.

На физичком iOS уређају, статистика потрошње енергије се такође приказује у Подешавања > Батерија. Ако је апликација у топ 10 по потрошњи — то је сигнал за оптимизацију.

Методе оптимизације потрошње енергије

WorkManager — стандардни API за позадинске задатке који уважава стање батерије, мреже и Doze режим. Гарантује извршење задатка у оптималним условима, а не одмах, што штеди до 40% енергије на позадинским операцијама.

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

Груписање мрежних захтева

Груписање захтева — обједињавање више мрежних операција у једну комуникациону сесију. Уместо 10 одвојених захтева, апликација извршава један групни захтев, што смањује време активности радио-модула са 30 секунди на 2-3 секунде.

  • Retrofit са OkHttp подржава груписање путем Interceptor-а
  • Firebase Cloud Messaging омогућава обједињавање обавештења у једну сесију
  • GraphQL — замена за REST, где један упит замењује више њих

Оптимизација рада са локацијом

FusedLocationProviderClient од Google Play Services бира оптимални извор локације у зависности од потребне прецизности. За позадинске задатке користите приоритет PRIORITY_BALANCED_POWER_ACCURACY — ово даје прецизност до 100 метара уз минималну потрошњу батерије.

У iOS-у користите Significant Location Change уместо Continuous Location. Ово омогућава примање ажурирања само при значајном померању (више од 500 метара), а не сваких неколико секунди.

Алати за анализу потрошње енергије

Android Battery Historian — Google-ов веб алат за визуализацију података BatteryStats-а. Подржава увоз дампова, обојено означавање компоненти и поређење сесија. Главне метрике: време држања WakeLock-а, активност радио-модула, GPS сесије.

Xcode Energy Organizer прикупља податке о потрошњи енергије од корисника продукције путем TestFlight-а и App Store-а. Добијате извештај о просечној потрошњи на различитим уређајима и верзијама iOS-а. Ово омогућава праћење регресија након ажурирања.

PerfDog (Tencent) — вишеплатформски алат за тестирање перформанси, који укључује мерења потрошње енергије. Подржава iOS и Android, омогућава снимање индикатора са фреквенцијом од 1-10 кадрова у секунди.

АлатПлатформаМетрике
Battery HistorianAndroidWakeLock, Мрежа, GPS, CPU, Display
Energy ProfilerAndroid StudioCPU, Мрежа, GPS, Radio у реалном времену
Energy LogiOS (Xcode)CPU, Мрежа, GPU, Display, Локација
PerfDogiOS + AndroidЕнергија, FPS, CPU, Меморија (све заједно)

Према Apple WWDC 2023, коришћење Energy Organiser-а омогућава смањење просечне потрошње енергије апликација за 15-25% кроз идентификацију и отклањање регресија пре објављивања ажурирања у App Store-у.

Често постављана питања

Која апликација највише троши батерију?

Друштвене мреже и месенџери (Facebook, Instagram, WhatsApp, Telegram) традиционално предњаче у потрошњи енергије. Оне стално синхронизују податке, ажурирају феед, примају push обавештења и користе GPS. На другом месту — игре са 3D графиком које истовремено оптерећују GPU и CPU, трошећи до 400-600 mA·h за сат активне игре.

Да ли фреквенција освежавања екрана утиче на потрошњу батерије?

Да, директно. Екран — најенергетски захтевнија компонента паметног телефона. Повећање фреквенције са 60 Hz на 120 Hz повећава потрошњу енергије дисплеја за 30-50%. Међутим, савремени дисплеји са LTPO технологијом динамички мењају фреквенцију од 1 до 120 Hz у зависности од садржаја, што смањује утицај на батерију.

Како GPS утиче на потрошњу енергије?

GPS са високом прецизношћу троши око 200-300 mA·h на сат непрекидног рада. Поређења ради, одређивање локације путем Wi-Fi-ја и мобилних базних станица (NETWORK_PROVIDER) троши само 20-40 mA·h за исти период. Користите Geofencing API за укључивање GPS-а само при уласку у одређену област.

Да ли вреди ручно затварати позадинске апликације?

Не вреди. Савремени оперативни системи (Android и iOS) сами оптимизују позадинске процесе. Принудно затварање апликације и поновно покретање троши више енергије него да је апликација остала у позадини. Изузетак — апликације које експлицитно изазивају проблеме (утврђује се путем статистике батерије у подешавањима).

Како сазнати која апликација троши батерију на Android-у?

Отворите Подешавања > Батерија > Коришћење батерије. Систем ће приказати листу апликација са процентом потрошње. За детаљну анализу користите ADB: adb shell dumpsys batterystats и учитајте дамп у Battery Historian. Ово ће показати не само укупну потрошњу, већ и разлагање по компонентама (WakeLock, Мрежа, GPS).

Завршни закључци

  • Повећана потрошња батерије — аномална потрошња енергије апликације која изазива брзо пражњење уређаја и погоршава корисничко искуство
  • Главни узроци: WakeLock, чести мрежни захтеви, GPS са високом прецизношћу, неоптимизоване анимације и позадински сервиси
  • WakeLock — најопаснији механизам; увек га ослобађајте у try/finally блоку или користите WakeLock.acquire са тајмаутом
  • WorkManager — стандардни API за позадинске задатке са уважавањем стања батерије и мреже, препоручен од Google-а
  • Груписање захтева смањује потрошњу енергије радио-модула за 30-50% кроз смањење броја прелаза између режима
  • Дијагностика путем Battery Historian-а, Energy Profiler-а и Xcode Energy Organiser-а обавезна је пре сваког објављивања
  • Профилишите потрошњу енергије на физичким уређајима — емулатори не дају прецизна очитавања батерије

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође