Batareyani yeydi: mobil ishlab chiqishda bu nima, sabablari va kurashish usullari

Muallif: IT Sectr Nashr etilgan: 2026-07-28 O'qish vaqti: 10 daq

Batareya sarfining oshishi — mobil ilova foydalanuvchilarining eng ko'p uchraydigan shikoyatlaridan biridir. Ilova anormal darajada ko'p energiya iste'mol qila boshlaydi, hatto fon rejimida ham qurilmaning tez zaryadsizlanishiga sabab bo'ladi. Google I/O 2023 ma'lumotlariga ko'ra, Google Play'dagi ilovalarning 30% gacha energiya iste'moli bilan bog'liq muammolarga ega bo'lib, bu to'g'ridan-to'g'ri foydalanuvchilarni ushlab qolishga ta'sir qiladi. Ushbu maqolada sabablar, diagnostika va optimallashtirish usullarini ko'rib chiqamiz.

Asosiy fikrlar

  • WakeLock — o'z vaqtida bo'shatilmasa, energiya oqishining asosiy sababi
  • Tarmoq so'rovlari to'plam holda bajarilmasa, radio modulini doimiy ishlashga majbur qiladi
  • Lokatsiya yuqori aniqlik bilan taxminiy lokatsiyadan 10 baravar ko'p energiya sarflaydi
  • WorkManager — batareya holatini hisobga olgan holda fon vazifalari uchun standart API
  • Profillash Battery Historian va Energy Profiler orqali chiqarishdan oldin majburiydir

Mobil ilovalarda “batareyani yeydi” degani nima?

Batareya sarfining oshishi — mobil ilova odatdagi foydalanish stsenariysida kutilganidan sezilarli darajada ko'proq energiya iste'mol qiladigan holatdir. Foydalanuvchi ilovani o'rnatish yoki yangilashdan so'ng qurilma odatdagidan 20-30% tezroq zaryadsizlanayotganini payqaydi.

Zamonaviy mobil operatsion tizimlar — Android va iOS — energiya iste'molini nazorat qilish uchun o'rnatilgan mexanizmlarga ega. Android Battery Optimization, iOS esa fon Background Modes dan foydalanadi. Biroq, API dan noto'g'ri foydalanish bu mexanizmlarni chetlab o'tishi mumkin.

Purdue University tadqiqotiga ko'ra (2021), ilovalarning taxminan 60% i aniq ehtiyojsiz fon vazifalariga energiya sarflaydi. Bu, ayniqsa, reklama, analitika va doimiy tarmoq ulanishiga ega ilovalar uchun xarakterlidir.

Batareya sarfi qanday o'lchanadi?

Energiya iste'moli mA·h (milliamper-soat) da o'lchanadi. Android BatteryManager API orqali har bir komponentning iste'molini kuzatuvchi ma'lumotlarni taqdim etadi: CPU, radio moduli, GPS, displey va 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 = joriy zaryad foizi

BatteryManager API joriy zaryad foizini va batareya sig'imini olish imkonini beradi, lekin ilovalar bo'yicha tafsilot bermaydi — buning uchun tizim yordamchi dasturlari kerak.

Energiya sarfi oshishining asosiy sabablari

WakeLock — batareya uchun eng xavfli mexanizm. Agar ilova WakeLock-ni bo'shatmasdan ushlab tursa, qurilma uyqu rejimiga o'tmaydi. WakeLock-ni har soat ushlab turish taxminan 50-80 mA·h energiya sarflaydi.

To'plam holda bajarilmaydigan tarmoq so'rovlari — ikkinchi eng keng tarqalgan sabab. Ilova har safar tarmoq ulanishini o'rnatganda, radio moduli energiya tejash rejimidan faol rejimga o'tadi. 5 daqiqadan kam oraliq bilan tez-tez qisqa so'rovlar radio modulini doimiy faol holatda ushlab turadi.

GPS lokatsiyasini yuqori aniqlik bilan (GPS_PROVIDER) aniqlash taxminiy aniqlashdan (NETWORK_PROVIDER) 10-15 baravar ko'p energiya sarflaydi. Fonda lokatsiyani doimiy yangilash foydalanuvchilarning asosiy shikoyatlaridan biridir.

  • Animatsiyalar va apparat tezlashtirishsiz renderlash GPU ni yuklaydi
  • Sensorlar (akselerometr, giroskop) ehtiyojsiz fon rejimida
  • Bluetooth qurilmalarni qidirishning yuqori chastotali skanerlashi
  • Keshlash batareya holatini hisobga olmasdan SD kartaga katta hajmdagi ma'lumotlarni yozish

Android Developers Blog ma'lumotlariga ko'ra, o'rtacha ilova qurilma umumiy batareya sarfining taxminan 15% ini iste'mol qiladi. Bu darajadan oshib ketish majburiy energiya auditini talab qiladi.

Batareya muammolarini qanday aniqlash mumkin?

Battery Historian — energiya iste'molini tahlil qilish uchun Google-ning rasmiy vositasidir. ADB dan BatteryStats damini qabul qiladi va iste'molni komponentlar bo'yicha vizualizatsiya qiladi: CPU, Tarmoq, GPS, WakeLock va displey.

Dam yaratish uchun buyruqni bajaring: adb shell dumpsys batterystats. 2-3 soat normal foydalanishdan so'ng ma'lumotlarni tahlil uchun Battery Historian ga yuklash mumkin.

Android Energy Profiler Android Studio da real vaqt rejimida energiya iste'molini kuzatadi. Ilovaning har bir operatsiyasi bo'yicha CPU, Tarmoq, GPS va displey iste'molini ko'rsatadi.

bash
# Testdan oldin batareya statistikasini nollang
adb shell dumpsys batterystats --reset

# Ilovadan 2-3 soat foydalaning

# Battery Historian uchun damni eksport qiling
adb shell dumpsys batterystats > batterystats_dump.txt

iOS da tahlil

iOS uchun Xcode — Instruments orqali Energy Log ishlatiladi. Energiya iste'moli haqidagi ma'lumotlarni modullar bo'yicha to'playdi: CPU, Tarmoq, GPU, Display, Lokatsiya. O'qish vaqti: bitta seansni tahlil qilish uchun 15-30 daqiqa.

Fizik iOS qurilmasida energiya iste'moli statistikasi Sozlamalar > Batareya bo'limida ham ko'rsatiladi. Agar ilova iste'mol bo'yicha kuchli o'nlikda bo'lsa — bu optimallashtirish uchun signaldir.

Energiya sarfini optimallashtirish usullari

WorkManager — batareya, tarmoq va Doze rejimi holatini hisobga oladigan fon vazifalari uchun standart API. Vazifani darhol emas, optimal sharoitda bajarishni kafolatlaydi, bu esa fon operatsiyalarida 40% energiyani tejaydi.

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

Tarmoq so'rovlarini to'plash

So'rovlarni to'plash — bir nechta tarmoq operatsiyalarini bitta aloqa seansida birlashtirishdir. 10 ta alohida so'rov o'rniga ilova bitta to'plam so'rovni bajaradi, bu radio modulining faollik vaqtini 30 soniyadan 2-3 soniyagacha qisqartiradi.

  • Retrofit OkHttp bilan Interceptor orqali to'plashni qo'llab-quvvatlaydi
  • Firebase Cloud Messaging bildirishnomalarni bitta seansda birlashtirish imkonini beradi
  • GraphQL — REST ning o'rnini bosuvchi, bunda bitta so'rov bir nechtasini o'rnini bosadi

Lokatsiya bilan ishlashni optimallashtirish

FusedLocationProviderClient Google Play Services dan talab qilinadigan aniqlikka qarab optimal lokatsiya manbasini tanlaydi. Fon vazifalari uchun PRIORITY_BALANCED_POWER_ACCURACY prioritetidan foydalaning — bu minimal batareya sarfi bilan 100 metrgacha aniqlik beradi.

iOS da Continuous Location o'rniga Significant Location Change dan foydalaning. Bu har bir necha soniyada emas, faqat sezilarli harakat (500 metrdan ortiq) bo'lganda yangilanish olish imkonini beradi.

Energiya sarfini tahlil qilish vositalari

Android Battery Historian — BatteryStats ma'lumotlarini vizualizatsiya qilish uchun Google-ning veb vositasidir. Damlarni import qilish, komponentlarni rang bilan belgilash va seanslarni solishtirishni qo'llab-quvvatlaydi. Asosiy metrikalar: WakeLock ushlab turish vaqti, radio modulining faolligi, GPS seanslari.

Xcode Energy Organizer TestFlight va App Store orqali foydalanuvchilardan energiya iste'moli ma'lumotlarini to'playdi. Turli qurilmalar va iOS versiyalarida o'rtacha iste'mol haqida hisobot olasiz. Bu yangilanishlardan keyin regressiyalarni kuzatish imkonini beradi.

PerfDog (Tencent) — energiya iste'moli o'lchovlarini o'z ichiga olgan ko'p platformali performans test vositasidir. iOS va Android ni qo'llab-quvvatlaydi, ko'rsatkichlarni sekundiga 1-10 kadr chastotasi bilan yozib olish imkonini beradi.

VositaPlatformaMetrikalar
Battery HistorianAndroidWakeLock, Tarmoq, GPS, CPU, Display
Energy ProfilerAndroid StudioCPU, Tarmoq, GPS, Radio real vaqtda
Energy LogiOS (Xcode)CPU, Tarmoq, GPU, Display, Lokatsiya
PerfDogiOS + AndroidEnergiya, FPS, CPU, Xotira (barchasi birga)

Apple WWDC 2023 ma'lumotlariga ko'ra, Energy Organiser dan foydalanish yangilanishni App Store ga chiqarishdan oldin regressiyalarni aniqlab bartaraf etish orqali ilovalarning o'rtacha energiya iste'molini 15-25% kamaytirish imkonini beradi.

Tez-tez beriladigan savollar

Qaysi ilova batareyani ko'proq yeydi?

Ijtimoiy tarmoqlar va messenjerlar (Facebook, Instagram, WhatsApp, Telegram) an'anaviy ravishda energiya iste'molida yetakchilik qiladi. Ular doimiy ma'lumotlarni sinxronlashtiradi, lentani yangilaydi, push bildirishnomalar oladi va GPS dan foydalanadi. Ikkinchi o'rinda — GPU va CPU ni bir vaqtda yuklaydigan, faol o'yin soatida 400-600 mA·h gacha energiya sarflaydigan 3D grafikali o'yinlar.

Ekran yangilanish chastotasi batareya sarfiga ta'sir qiladimi?

Ha, bevosita. Ekran — smartfonning eng energiya talab qiluvchi komponenti. Chastotani 60 Hz dan 120 Hz gacha oshirish displeyning energiya iste'molini 30-50% ga oshiradi. Biroq, LTPO texnologiyali zamonaviy displeylar chastotani kontentga qarab 1 dan 120 Hz gacha dinamik o'zgartiradi, bu batareyaga ta'sirni kamaytiradi.

GPS energiya iste'moliga qanday ta'sir qiladi?

Yuqori aniqlikdagi GPS bir soat uzluksiz ish uchun taxminan 200-300 mA·h energiya sarflaydi. Taqqoslash uchun, Wi-Fi va mobil tayanch stansiyalar (NETWORK_PROVIDER) orqali lokatsiyani aniqlash xuddi shu davrda atigi 20-40 mA·h energiya sarflaydi. GPS ni faqat belgilangan hududga kirganda yoqish uchun Geofencing API dan foydalaning.

Fon ilovalarini qo'lda yopish kerakmi?

Kerak emas. Zamonaviy operatsion tizimlar (Android va iOS) fon jarayonlarini o'zlari optimallashtiradi. Ilovani majburiy yopish va qayta ishga tushirish, uning fonda qolishidan ko'ra ko'proq energiya sarflaydi. Istisno — aniq muammo keltirib chiqaradigan ilovalar (sozlamalardagi batareya statistikasi orqali aniqlanadi).

Android da qaysi ilova batareyani yeyotganini qanday bilish mumkin?

Sozlamalar > Batareya > Batareya iste'moli bo'limini oching. Tizim iste'mol foizi bilan ilovalar ro'yxatini ko'rsatadi. Batafsil tahlil uchun ADB dan foydalaning: adb shell dumpsys batterystats va damni Battery Historian ga yuklang. Bu nafaqat umumiy iste'molni, balki komponentlar bo'yicha taqsimotni ham ko'rsatadi (WakeLock, Tarmoq, GPS).

Xulosa

  • Batareya sarfining oshishi — ilovaning anormal energiya iste'moli, qurilmaning tez zaryadsizlanishiga va foydalanuvchi tajribasining yomonlashishiga sabab bo'ladi
  • Asosiy sabablar: WakeLock, tez-tez tarmoq so'rovlari, yuqori aniqlikdagi GPS, optimallashtirilmagan animatsiyalar va fon xizmatlari
  • WakeLock — eng xavfli mexanizm; har doim uni try/finally blokida bo'shating yoki WakeLock.acquire dan taym-aut bilan foydalaning
  • WorkManager — Google tomonidan tavsiya etilgan, batareya va tarmoq holatini hisobga oladigan fon vazifalari uchun standart API
  • So'rovlarni to'plash rejimlar o'rtasidagi o'tishlar sonini kamaytirish orqali radio modulining energiya iste'molini 30-50% ga kamaytiradi
  • Diagnostika Battery Historian, Energy Profiler va Xcode Energy Organiser orqali har bir chiqarishdan oldin majburiydir
  • Energiya iste'molini fizik qurilmalarda profillang — emulyatorlar aniq batareya ko'rsatkichlarini bermaydi

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing