Batareyanı yeyir: mobil inkişafda bu nədir, səbəbləri və mübarizə üsulları

Müəllif: IT Sectr Dərc olunub: 2026-07-28 Oxuma vaxtı: 10 dəq

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

  • WakeLock — vaxtında azad edilməzsə, enerji sızmasının əsas səbəbidir
  • Şəbəkə sorğuları toplu halda aparılmazsa, radio modulunu daim işlək vəziyyətdə saxlayır
  • Lokasiya yüksək dəqiqliklə təxmini lokasiyadan 10 dəfə çox enerji sərf edir
  • WorkManager — batareya vəziyyətini nəzərə alan fon tapşırıqları üçün standart API
  • Profilləşdirmə Battery Historian və Energy Profiler vasitəsilə buraxılışdan əvvəl məcburidir

Mobil tətbiqlərdə “batareyanı yeyir” nə deməkdir?

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.

Batareya sərfiyyatı necə ölçülür?

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.

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

Enerji sərfiyyatının artmasının əsas səbəbləri

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.

  • Animasiyalar və aparat sürətləndirilməsi olmadan renderinq GPU-nu yükləyir
  • Sensorlar (akselerometr, giroskop) ehtiyac olmadan fon rejimində
  • Bluetooth cihaz axtarışının yüksək tezliklə skan edilməsi
  • Keşləmə batareya vəziyyəti nəzərə alınmadan SD karta böyük həcmli məlumatların yazılması

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.

Batareya problemlərini necə diaqnoz etmək olar?

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.

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

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.

Enerji sərfiyyatının optimallaşdırılması üsulları

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.

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

Şəbəkə sorğularının toplulaşdırılması

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.

  • Retrofit OkHttp ilə Interceptor vasitəsilə toplulaşdırmanı dəstəkləyir
  • Firebase Cloud Messaging bildirişləri bir seansda birləşdirməyə imkan verir
  • GraphQL — REST-in əvəzedicisi, burada bir sorğu bir neçəsini əvəz edir

Lokasiya ilə işin optimallaşdırılması

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.

Enerji sərfiyyatının təhlili üçün alətlər

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ətPlatformaMetrikalar
Battery HistorianAndroidWakeLock, Network, GPS, CPU, Display
Energy ProfilerAndroid StudioCPU, Network, GPS, Radio real vaxtda
Energy LogiOS (Xcode)CPU, Network, GPU, Display, Location
PerfDogiOS + AndroidEnerji, 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

Hansı tətbiq batareyanı daha çox yeyir?

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.

Ekran yeniləmə tezliyi batareya sərfiyyatına təsir edirmi?

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.

GPS enerji istehlakına necə təsir edir?

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.

Fon tətbiqlərini əl ilə bağlamağa dəyərmi?

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

Android-də hansı tətbiqin batareyanı yediyini necə öyrənmək olar?

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ə

  • Batareya sərfiyyatının artması — tətbiqin anormal enerji istehlakı, cihazın sürətli boşalmasına və istifadəçi təcrübəsinin pisləşməsinə səbəb olur
  • Əsas səbəblər: WakeLock, tez-tez şəbəkə sorğuları, yüksək dəqiqlikli GPS, optimallaşdırılmamış animasiyalar və fon xidmətləri
  • WakeLock — ən təhlükəli mexanizm; həmişə onu try/finally blokunda azad edin və ya WakeLock.acquire-dan timeout ilə istifadə edin
  • WorkManager — Google tərəfindən tövsiyə olunan, batareya və şəbəkə vəziyyətini nəzərə alan fon tapşırıqları üçün standart API
  • Sorğuların toplulaşdırılması rejimlər arasında keçid sayını azaltmaqla radio modulunun enerji istehlakını 30-50% azaldır
  • Diaqnostika Battery Historian, Energy Profiler və Xcode Energy Organiser vasitəsilə hər buraxılışdan əvvəl məcburidir
  • Enerji istehlakını fiziki cihazlarda profilləşdirin — emulyatorlar dəqiq batareya göstəriciləri vermir

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.

Layihəni müzakirə et

Həm də oxuyun