Penggunaan lokasi latar belakang dapat memengaruhi masa pakai baterai secara signifikan. Android mendukung batasan pengumpulan lokasi latar belakang, yang mendorong developer untuk mengoptimalkan aplikasi mereka agar lebih hemat baterai. Pengoptimalan ini bermanfaat untuk semua perangkat, terlepas dari versi Android yang berjalan.
Dengan Batas Lokasi Latar Belakang:
- Pengumpulan lokasi latar belakang diperlambat dan lokasi dihitung, dan hanya dikirim beberapa kali dalam satu jam.
- Pemindaian Wi-Fi lebih konservatif, dan pembaruan lokasi tidak dihitung saat perangkat tetap terhubung dengan titik akses statis yang sama.
- Daya respons pembatasan wilayah berubah dari puluhan detik hingga sekitar dua menit. Perubahan ini meningkatkan performa baterai—hingga 10 kali lebih baik pada beberapa perangkat.
Pengetahuan yang diperlukan
Dokumen ini mengasumsikan bahwa Anda sudah memahami API berikut:
- Layanan Lokasi Google. API ini menawarkan akurasi yang lebih tinggi dan mengenakan beban baterai yang lebih ringan daripada API lokasi framework.
- Fused Location Provider. API ini menggabungkan sinyal dari GPS, Wi-Fi, dan jaringan seluler, serta akselerometer, giroskop, magnetometer, dan sensor lainnya.
- Pembatasan Wilayah, API ini dibuat di atas API Penyedia Lokasi Gabungan, dan dioptimalkan untuk performa baterai.
Memahami pengurasan baterai
Pengumpulan lokasi dan pengurasan baterai terkait sebagai berikut:
- Akurasi: Presisi data lokasi. Secara umum, makin tinggi akurasinya, maka makin tinggi pengurasan baterai.
- Frekuensi: Seberapa sering lokasi dihitung. Semakin sering lokasi dihitung, makin banyak baterai yang digunakan.
- Latensi: Seberapa cepat data lokasi dikirimkan. Lebih sedikit latensi biasanya memerlukan lebih banyak baterai.
Akurasi
Anda dapat menentukan akurasi lokasi menggunakan metode setPriority()
, yang meneruskan salah satu nilai berikut sebagai argumen:
PRIORITY_HIGH_ACCURACY
menyediakan lokasi seakurat mungkin, yang dihitung menggunakan input sebanyak yang diperlukan (mengaktifkan GPS, Wi-Fi, dan sel, serta menggunakan berbagai Sensor), dan dapat menyebabkan pengurasan baterai yang signifikan.PRIORITY_BALANCED_POWER_ACCURACY
memberikan lokasi yang akurat sekaligus mengoptimalkan daya. Sangat jarang menggunakan GPS. Biasanya menggunakan kombinasi informasi Wi-Fi dan sel untuk menghitung lokasi perangkat.PRIORITY_LOW_POWER
sangat mengandalkan menara seluler dan menghindari input Wi-Fi dan GPS, yang memberikan akurasi (tingkat kota) sementara dengan pengurasan baterai minimal.PRIORITY_NO_POWER
menerima lokasi secara pasif dari aplikasi lain untuk lokasi yang telah dihitung.
Gunakan opsi daya seimbang atau daya rendah untuk memenuhi kebutuhan lokasi sebagian besar aplikasi. Cadangan akurasi tinggi untuk aplikasi yang berjalan di latar depan dan memerlukan update lokasi real time (misalnya, aplikasi pemetaan).
Frekuensi
Anda bisa menetapkan frekuensi lokasi menggunakan dua metode:
- Gunakan metode
setinterval()
untuk menentukan interval penghitungan lokasi aplikasi Anda. - Gunakan metode
setFastestInterval()
untuk menentukan interval untuk menerima lokasi aplikasi lain.
Teruskan nilai terbesar yang mungkin saat menggunakan setInterval()
. Hal ini terutama
berlaku untuk pengumpulan lokasi latar belakang, yang sering kali menguras baterai. Cadangankan
interval beberapa detik untuk kasus penggunaan latar depan.
Batas lokasi latar belakang yang diperkenalkan di Android 8.0 (API level 26) memberlakukan strategi ini, tetapi aplikasi Anda harus berusaha memberlakukannya pada perangkat yang menjalankan Android 7.0 (API level 24) dan yang lebih rendah.
Latensi
Anda dapat menentukan latensi menggunakan metode setMaxWaitTime()
, yang biasanya
meneruskan nilai yang beberapa kali lebih besar dari interval yang ditentukan dalam
metode setInterval()
. Setelan ini menunda pengiriman lokasi, dan beberapa update lokasi akan dikirimkan dalam batch. Dua perubahan ini membantu
meminimalkan konsumsi baterai.
Jika aplikasi Anda tidak segera memerlukan update lokasi, Anda harus meneruskan
nilai kemungkinan terbesar ke metode setMaxWaitTime()
, yang secara efektif berdagang latensi
untuk lebih banyak data dan efisiensi baterai.
Saat menggunakan pembatasan wilayah, aplikasi harus meneruskan nilai besar ke dalam metode
setNotificationResponsiveness()
untuk menghemat daya. Nilai
lima menit atau lebih besar disarankan.
Bacaan lebih lanjut
Untuk informasi selengkapnya, lihat dokumen berikut:
- Rekomendasi: Panduan ini menjelaskan beberapa tindakan konkret yang direkomendasikan yang dapat Anda gunakan untuk mengurangi dampak aplikasi terhadap masa pakai baterai.
- Kasus penggunaan: Panduan ini memberikan beberapa kasus penggunaan umum saat Anda mungkin menggunakan layanan lokasi dan cara mengoptimalkan dampaknya terhadap masa pakai baterai untuk kasus tersebut.