Batareya sərfiyyatının artması — mobil tətbiq istifadəçilərinin ən çox şikayət etdiyi problemlərdən biridir. Tətbiq anormal dərəcədə çox enerji istehlak etməyə başlayır, hətta fon rejimində belə cihazın tez boşalmasına səbəb olur. Google I/O 2023 məlumatına görə, Google Play-də tətbiqlərin 30%-ə qədərinin enerji istehlakı ilə bağlı problemləri var və bu, birbaşa istifadəçilərin saxlanmasına təsir edir. Bu məqalədə səbəbləri, diaqnostikanı və optimallaşdırma üsullarını nəzərdən keçirəcəyik.
Əsas məqamlar
Batareya sərfiyyatının artması — mobil tətbiqin tipik istifadə ssenarisində gözləniləndən əhəmiyyətli dərəcədə çox enerji istehlak etdiyi vəziyyətdir. İstifadəçi tətbiqi quraşdırdıqdan və ya yenilədikdən sonra cihazın adi haldan 20-30% daha sürətli boşaldığını görür.
Müasir mobil əməliyyat sistemləri — Android və iOS — enerji istehlakına nəzarət üçün daxili mexanizmlərə malikdir. Android Battery Optimization, iOS isə fon Background Modes istifadə edir. Lakin API-dən düzgün istifadə edilməməsi bu mexanizmləri yan keçə bilər.
Purdue University tədqiqatına görə (2021), tətbiqlərin təxminən 60%-i açıq ehtiyac olmadan fon tapşırıqlarına enerji sərf edir. Bu, xüsusilə reklam, analitika və daimi şəbəkə bağlantısı olan tətbiqlər üçün xarakterikdir.
Enerji istehlakı mA·h (milliamper-saat) ilə ölçülür. Android BatteryManager API vasitəsilə hər bir komponentin istehlakını izləyən məlumatları təqdim edir: CPU, radio modulu, GPS, displey və sensorlar.
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 = cari doldurma faizi
BatteryManager API cari yük faizini və batareya tutumunu əldə etməyə imkan verir, lakin tətbiq üzrə detallaşdırma təqdim etmir — bunun üçün sistem yardımçı proqramları lazımdır.
WakeLock — batareya üçün ən təhlükəli mexanizmdir. Tətbiq WakeLock-u azad etmədən saxlayırsa, cihaz yuxu rejiminə keçmir. WakeLock-un hər saat saxlanması təxminən 50-80 mA·h enerji sərf edir.
Toplu halda aparılmayan şəbəkə sorğuları — ikinci ən çox rast gəlinən səbəbdir. Tətbiq hər dəfə şəbəkə bağlantısı qurduqda, radio modulu enerjiyə qənaət rejimindən aktiv rejimə keçir. 5 dəqiqədən az fasilələrlə tez-tez qısa sorğular radio modulunu daim aktiv vəziyyətdə saxlayır.
GPS lokasiyasının yüksək dəqiqliklə (GPS_PROVIDER) təyin edilməsi təxmini təyinatdan (NETWORK_PROVIDER) 10-15 dəfə çox enerji sərf edir. Fonda lokasiyanın daim yenilənməsi istifadəçilərin əsas şikayətlərindəndir.
Android Developers Blog məlumatına görə, orta hesabla bir tətbiq cihazın ümumi batareya sərfiyyatının təxminən 15%-ni istehlak edir. Bu səviyyənin aşılması məcburi enerji auditi tələb edir.
Battery Historian — enerji istehlakını təhlil etmək üçün Google-ın rəsmi alətidir. ADB-dən BatteryStats zərfini qəbul edir və istehlakı komponentlər üzrə vizuallaşdırır: CPU, Network, GPS, WakeLock və displey.
Zərf yaratmaq üçün əmri yerinə yetirin: adb shell dumpsys batterystats. 2-3 saat normal istifadədən sonra məlumatları təhlil üçün Battery Historian-a yükləmək olar.
Android Energy Profiler Android Studio-da real vaxt rejimində enerji istehlakını izləyir. Tətbiqin hər bir əməliyyatı üzrə CPU, Network, GPS və displey istehlakını göstərir.
# Testdən əvvəl batareya statistikasını sıfırlayın
adb shell dumpsys batterystats --reset
# Tətbiqdən 2-3 saat istifadə edin
# Battery Historian üçün zərfi ixrac edin
adb shell dumpsys batterystats > batterystats_dump.txt
iOS üçün Xcode — Instruments vasitəsilə Energy Log istifadə olunur. Enerji istehlakı haqqında məlumatları modullar üzrə toplayır: CPU, Network, GPU, Display, Location. Oxuma müddəti: bir seansın təhlili üçün 15-30 dəqiqə.
Fiziki iOS cihazında da enerji istehlakı statistikası Settings > Battery bölməsində göstərilir. Tətbiq istehlaka görə ilk onluqdadırsa — bu optimallaşdırma üçün siqnaldır.
WorkManager — batareya, şəbəkə və Doze rejiminin vəziyyətini nəzərə alan fon tapşırıqları üçün standart API. Tapşırığın dərhal deyil, optimal şəraitdə yerinə yetirilməsinə zəmanət verir ki, bu da fon əməliyyatlarında 40% enerjiyə qənaət edir.
val workRequest = OneTimeWorkRequestBuilder<SyncWorker>()
.setConstraints(
Constraints.Builder()
.setRequiresCharging(true)
.setRequiresBatteryNotLow(true)
.setRequiresNetworkType(NetworkType.CONNECTED)
.build()
)
.build()
WorkManager.getInstance(this).enqueue(workRequest)
Sorğuların toplulaşdırılması — bir neçə şəbəkə əməliyyatının bir rabitə seansında birləşdirilməsidir. 10 ayrı sorğu əvəzinə tətbiq bir toplu sorğu yerinə yetirir ki, bu da radio modulunun aktivlik müddətini 30 saniyədən 2-3 saniyəyə endirir.
FusedLocationProviderClient Google Play Services-dən tələb olunan dəqiqlikdən asılı olaraq optimal lokasiya mənbəyini seçir. Fon tapşırıqları üçün PRIORITY_BALANCED_POWER_ACCURACY prioritetindən istifadə edin — bu, minimal batareya sərfiyyatı ilə 100 metrə qədər dəqiqlik verir.
iOS-da Continuous Location əvəzinə Significant Location Change istifadə edin. Bu, hər bir neçə saniyədən bir deyil, yalnız əhəmiyyətli hərəkət (500 metrdən çox) olduqda yeniləmə almağa imkan verir.
Android Battery Historian — BatteryStats məlumatlarını vizuallaşdırmaq üçün Google-ın veb alətidir. Zərflərin importunu, komponentlərin rənglə işarələnməsini və seansların müqayisəsini dəstəkləyir. Əsas metrikalar: WakeLock saxlama müddəti, radio modulunun aktivliyi, GPS seansları.
Xcode Energy Organizer TestFlight və App Store vasitəsilə istifadəçilərdən enerji istehlakı məlumatlarını toplayır. Müxtəlif cihazlarda və iOS versiyalarında orta istehlak haqqında hesabat alırsınız. Bu, yeniləmələrdən sonra reqressiyaları izləməyə imkan verir.
PerfDog (Tencent) — enerji istehlakı ölçmələrini əhatə edən çoxplatformalı performans test alətidir. iOS və Android-i dəstəkləyir, göstəriciləri saniyədə 1-10 kadr tezliyi ilə qeyd etməyə imkan verir.
| Alət | Platforma | Metrikalar |
|---|---|---|
| Battery Historian | Android | WakeLock, Network, GPS, CPU, Display |
| Energy Profiler | Android Studio | CPU, Network, GPS, Radio real vaxtda |
| Energy Log | iOS (Xcode) | CPU, Network, GPU, Display, Location |
| PerfDog | iOS + Android | Enerji, FPS, CPU, Memory (hamısı birlikdə) |
Apple WWDC 2023 məlumatına görə, Energy Organiser istifadəsi yeniləmə App Store-a çıxmazdan əvvəl reqressiyaları aşkarlayıb aradan qaldırmaqla tətbiqlərin orta enerji istehlakını 15-25% azaltmağa imkan verir.
Tez-tez verilən suallar
Sosial şəbəkələr və mesencerlər (Facebook, Instagram, WhatsApp, Telegram) ənənəvi olaraq enerji istehlakında liderdir. Onlar daim məlumatları sinxronlaşdırır, lentləri yeniləyir, push bildirişləri alır və GPS-dən istifadə edir. İkinci yerdə — GPU və CPU-nu eyni anda yükləyən, aktiv oyun saatında 400-600 mA·h enerji sərf edən 3D qrafikalı oyunlardır.
Bəli, birbaşa. Ekran smartfonun ən çox enerji sərf edən komponentidir. Tezliyin 60 Hz-dən 120 Hz-ə yüksəldilməsi displeyin enerji istehlakını 30-50% artırır. Lakin LTPO texnologiyalı müasir displeylər məzmundan asılı olaraq tezliyi 1 ilə 120 Hz arasında dinamik dəyişir ki, bu da batareyaya təsiri azaldır.
Yüksək dəqiqlikli GPS bir saat fasiləsiz iş üçün təxminən 200-300 mA·h enerji sərf edir. Müqayisə üçün, Wi-Fi və mobil baza stansiyaları (NETWORK_PROVIDER) vasitəsilə lokasiyanın təyini eyni müddətdə cəmi 20-40 mA·h enerji sərf edir. GPS-i yalnız müəyyən edilmiş əraziyə daxil olduqda aktivləşdirmək üçün Geofencing API-dən istifadə edin.
Dəyməz. Müasir əməliyyat sistemləri (Android və iOS) fon proseslərini özləri optimallaşdırır. Tətbiqi məcburi bağlamaq və yenidən açmaq, onun fonda qalmasından daha çox enerji sərf edir. İstisna — açıq şəkildə problem yaradan tətbiqlərdir (parametrlərdə batareya statistikası vasitəsilə müəyyən edilir).
Parametrlər > Batareya > Batareya istifadəsi bölməsini açın. Sistem istehlak faizi ilə tətbiqlərin siyahısını göstərəcək. Ətraflı təhlil üçün ADB-dən istifadə edin: adb shell dumpsys batterystats və zərfi Battery Historian-a yükləyin. Bu, təkcə ümumi istehlakı deyil, həm də komponentlər üzrə bölgünü (WakeLock, Network, GPS) göstərəcək.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun