Memakan baterai dalam pengembangan mobile: apa itu, penyebab dan metode penanganan

Penulis: IT Sectr Diterbitkan: 2026-07-28 Waktu membaca: 10 mnt

Peningkatan konsumsi baterai — salah satu keluhan paling umum dari pengguna aplikasi mobile. Aplikasi mulai mengonsumsi energi secara tidak normal, menyebabkan perangkat cepat habis bahkan dalam mode latar belakang. Menurut Google I/O 2023, hingga 30% aplikasi di Google Play memiliki masalah konsumsi daya, yang secara langsung memengaruhi retensi pengguna. Dalam artikel ini kita akan membahas penyebab, diagnosis, dan metode optimasi.

Poin Utama

  • WakeLock — penyebab utama kebocoran energi jika tidak dilepaskan tepat waktu
  • Permintaan jaringan tanpa pengelompokan memaksa modul radio bekerja terus-menerus
  • Lokasi dengan akurasi tinggi mengonsumsi 10 kali lebih banyak energi daripada perkiraan
  • WorkManager — API standar untuk tugas latar belakang dengan mempertimbangkan status baterai
  • Profil melalui Battery Historian dan Energy Profiler wajib dilakukan sebelum rilis

Apa itu “memakan baterai” dalam aplikasi mobile?

Peningkatan konsumsi baterai — kondisi di mana aplikasi mobile mengonsumsi energi jauh lebih banyak dari yang diharapkan dalam skenario penggunaan tipikal. Pengguna menyadari bahwa perangkat habis 20-30% lebih cepat dari biasanya setelah menginstal atau memperbarui aplikasi.

Sistem operasi mobile modern — Android dan iOS — memiliki mekanisme kontrol konsumsi energi bawaan. Android menggunakan Battery Optimization, dan iOS menggunakan Background Modes. Namun, penggunaan API yang salah dapat menghindari mekanisme ini.

Menurut penelitian Purdue University (2021), sekitar 60% aplikasi mengonsumsi energi untuk tugas latar belakang tanpa kebutuhan yang jelas. Ini terutama khas untuk aplikasi dengan iklan, analitik, dan koneksi jaringan permanen.

Bagaimana konsumsi baterai diukur?

Konsumsi energi diukur dalam mA·h (miliampere-jam). Android menyediakan data melalui BatteryManager API, yang melacak konsumsi setiap komponen: CPU, modul radio, GPS, layar, dan sensor.

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 = persentase pengisian saat ini

BatteryManager API memungkinkan mendapatkan persentase pengisian daya saat ini dan kapasitas baterai, tetapi tidak memberikan detail per aplikasi — untuk itu diperlukan utilitas sistem.

Penyebab utama peningkatan konsumsi energi

WakeLock — mekanisme paling berbahaya untuk baterai. Jika aplikasi menahan WakeLock tanpa melepaskannya, perangkat tidak masuk ke mode tidur. Setiap jam penahanan WakeLock mengonsumsi sekitar 50-80 mA·h.

Permintaan jaringan tanpa pengelompokan — penyebab paling umum kedua. Setiap kali aplikasi membuat koneksi jaringan, modul radio beralih dari mode hemat energi ke mode aktif. Permintaan pendek yang sering dengan interval kurang dari 5 menit membuat modul radio tetap aktif secara konstan.

Penentuan lokasi GPS dengan akurasi tinggi (GPS_PROVIDER) mengonsumsi 10-15 kali lebih banyak energi daripada penentuan perkiraan (NETWORK_PROVIDER). Pembaruan lokasi terus-menerus di latar belakang adalah salah satu keluhan utama pengguna.

  • Animasi dan rendering tanpa akselerasi perangkat keras membebani GPU
  • Sensor (akselerometer, giroskop) di latar belakang tanpa kebutuhan
  • Bluetooth pemindaian dengan frekuensi tinggi untuk mencari perangkat
  • Caching data dalam jumlah besar ke kartu SD tanpa mempertimbangkan status baterai

Menurut Android Developers Blog, aplikasi rata-rata mengonsumsi sekitar 15% dari total konsumsi baterai perangkat. Melebihi level ini memerlukan audit konsumsi energi wajib.

Bagaimana mendiagnosis masalah baterai?

Battery Historian — alat resmi Google untuk analisis konsumsi energi. Ini menerima dump BatteryStats dari ADB dan memvisualisasikan konsumsi per komponen: CPU, Jaringan, GPS, WakeLock, dan layar.

Untuk membuat dump, jalankan perintah: adb shell dumpsys batterystats. Setelah mengumpulkan data selama 2-3 jam penggunaan normal, Anda dapat memuat laporan ke Battery Historian untuk dianalisis.

Android Energy Profiler di Android Studio melacak konsumsi energi secara real-time. Ini menunjukkan konsumsi CPU, Jaringan, GPS, dan layar untuk setiap operasi aplikasi.

bash
# Setel ulang statistik baterai sebelum pengujian
adb shell dumpsys batterystats --reset

# Gunakan aplikasi selama 2-3 jam

# Ekspor dump untuk Battery Historian
adb shell dumpsys batterystats > batterystats_dump.txt

Analisis di iOS

Untuk iOS digunakan Energy Log melalui Xcode — Instruments. Ini mengumpulkan data konsumsi energi yang dirinci per modul: CPU, Jaringan, GPU, Layar, Lokasi. Waktu baca: 15-30 menit untuk analisis satu sesi.

Pada perangkat iOS fisik, statistik konsumsi energi juga ditampilkan di Pengaturan > Baterai. Jika aplikasi masuk dalam 10 besar konsumsi — itu adalah sinyal untuk optimasi.

Metode optimasi konsumsi energi

WorkManager — API standar untuk tugas latar belakang yang mempertimbangkan status baterai, jaringan, dan mode Doze. Ini menjamin eksekusi tugas dalam kondisi optimal, bukan segera, yang menghemat hingga 40% energi pada operasi latar belakang.

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

Pengelompokan permintaan jaringan

Pengelompokan permintaan — menggabungkan beberapa operasi jaringan menjadi satu sesi komunikasi. Alih-alih 10 permintaan terpisah, aplikasi melakukan satu permintaan kelompok, yang mengurangi waktu aktivitas modul radio dari 30 detik menjadi 2-3 detik.

  • Retrofit dengan OkHttp mendukung pengelompokan melalui Interceptor
  • Firebase Cloud Messaging memungkinkan menggabungkan notifikasi dalam satu sesi
  • GraphQL — pengganti REST, di mana satu kueri menggantikan beberapa

Optimasi kerja dengan lokasi

FusedLocationProviderClient dari Google Play Services memilih sumber lokasi optimal berdasarkan akurasi yang diperlukan. Untuk tugas latar belakang, gunakan prioritas PRIORITY_BALANCED_POWER_ACCURACY — ini memberikan akurasi hingga 100 meter dengan konsumsi baterai minimal.

Di iOS, gunakan Significant Location Change alih-alih Continuous Location. Ini memungkinkan menerima pembaruan hanya saat perpindahan signifikan (lebih dari 500 meter), bukan setiap beberapa detik.

Alat untuk analisis konsumsi energi

Android Battery Historian — alat web Google untuk memvisualisasikan data BatteryStats. Mendukung impor dump, kode warna komponen, dan perbandingan sesi. Metrik utama: waktu penahanan WakeLock, aktivitas modul radio, sesi GPS.

Xcode Energy Organizer mengumpulkan data konsumsi energi dari pengguna produksi melalui TestFlight dan App Store. Anda menerima laporan tentang konsumsi rata-rata di berbagai perangkat dan versi iOS. Ini memungkinkan melacak regresi setelah pembaruan.

PerfDog (Tencent) — alat cross-platform untuk pengujian kinerja, termasuk pengukuran konsumsi energi. Mendukung iOS dan Android, memungkinkan merekam indikator dengan frekuensi 1-10 frame per detik.

AlatPlatformMetrik
Battery HistorianAndroidWakeLock, Jaringan, GPS, CPU, Layar
Energy ProfilerAndroid StudioCPU, Jaringan, GPS, Radio secara real-time
Energy LogiOS (Xcode)CPU, Jaringan, GPU, Layar, Lokasi
PerfDogiOS + AndroidEnergi, FPS, CPU, Memori (semua bersama)

Menurut Apple WWDC 2023, penggunaan Energy Organiser memungkinkan pengurangan konsumsi energi rata-rata aplikasi sebesar 15-25% dengan mengidentifikasi dan memperbaiki regresi sebelum pembaruan dirilis di App Store.

Pertanyaan yang Sering Diajukan

Aplikasi apa yang paling banyak menghabiskan baterai?

Media sosial dan messenger (Facebook, Instagram, WhatsApp, Telegram) secara tradisional memimpin dalam konsumsi energi. Mereka terus-menerus menyinkronkan data, memperbarui feed, menerima notifikasi push, dan menggunakan GPS. Di posisi kedua — game dengan grafis 3D yang membebani GPU dan CPU secara bersamaan, mengonsumsi hingga 400-600 mA·h per jam permainan aktif.

Apakah refresh rate layar memengaruhi konsumsi baterai?

Ya, secara langsung. Layar — komponen paling boros energi dari smartphone. Peningkatan frekuensi dari 60 Hz ke 120 Hz meningkatkan konsumsi energi layar sebesar 30-50%. Namun, layar modern dengan teknologi LTPO secara dinamis mengubah frekuensi dari 1 hingga 120 Hz tergantung pada konten, yang mengurangi dampak pada baterai.

Bagaimana GPS memengaruhi konsumsi energi?

GPS dengan akurasi tinggi mengonsumsi sekitar 200-300 mA·h per jam kerja terus-menerus. Sebagai perbandingan, penentuan lokasi melalui Wi-Fi dan menara seluler (NETWORK_PROVIDER) hanya mengonsumsi 20-40 mA·h dalam periode yang sama. Gunakan Geofencing API untuk mengaktifkan GPS hanya saat memasuki area tertentu.

Haruskah saya menutup aplikasi latar belakang secara manual?

Tidak perlu. Sistem operasi modern (Android dan iOS) mengoptimalkan proses latar belakang sendiri. Menutup paksa aplikasi dan memulai ulang mengonsumsi lebih banyak energi daripada jika aplikasi tetap di latar belakang. Pengecualian — aplikasi yang secara eksplisit menyebabkan masalah (ditentukan melalui statistik baterai di pengaturan).

Bagaimana cara mengetahui aplikasi mana yang memakan baterai di Android?

Buka Pengaturan > Baterai > Penggunaan Baterai. Sistem akan menampilkan daftar aplikasi dengan persentase konsumsi. Untuk analisis terperinci, gunakan ADB: adb shell dumpsys batterystats dan muat dump ke Battery Historian. Ini akan menunjukkan tidak hanya konsumsi total, tetapi juga rincian per komponen (WakeLock, Jaringan, GPS).

Kesimpulan

  • Peningkatan konsumsi baterai — konsumsi energi abnormal oleh aplikasi, menyebabkan pengosongan perangkat cepat dan pengalaman pengguna yang buruk
  • Penyebab utama: WakeLock, permintaan jaringan yang sering, GPS dengan akurasi tinggi, animasi yang tidak dioptimalkan, dan layanan latar belakang
  • WakeLock — mekanisme paling berbahaya; selalu lepaskan dalam blok try/finally atau gunakan WakeLock.acquire dengan batas waktu
  • WorkManager — API standar untuk tugas latar belakang dengan mempertimbangkan status baterai dan jaringan, direkomendasikan oleh Google
  • Pengelompokan permintaan mengurangi konsumsi energi modul radio sebesar 30-50% dengan mengurangi jumlah transisi antar mode
  • Diagnosis melalui Battery Historian, Energy Profiler, dan Xcode Energy Organiser wajib sebelum setiap rilis
  • Profil konsumsi energi pada perangkat fisik — emulator tidak memberikan pembacaan baterai yang akurat

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga