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 efisiensi baterai lebih baik. 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 dari 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: Ketepatan 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 GPS dan Wi-Fi, yang memberikan akurasi sementara (tingkat kota) 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. Cadangkan 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
setIntervalMillis()
untuk menentukan interval untuk menghitung lokasi aplikasi Anda. - Gunakan metode
setMinUpdateIntervalMillis()
untuk menentukan interval untuk menerima lokasi aplikasi lain.
Teruskan nilai terbesar yang memungkinkan saat menggunakan setIntervalMillis()
. Hal ini
terutama terjadi untuk pengumpulan lokasi latar belakang, yang sering kali menguras
baterai. Mencadangkan interval selama beberapa detik untuk kasus penggunaan latar depan.
Batas lokasi latar belakang yang diperkenalkan di Android 8.0 (API level 26) menerapkan strategi ini, tetapi aplikasi Anda harus berusaha menerapkannya di perangkat yang menjalankan Android 7.0 (API level 24) dan yang lebih rendah.
Latensi
Anda dapat menentukan latensi menggunakan metode setMaxUpdateDelayMillis()
,
yang biasanya meneruskan nilai yang beberapa kali lebih besar dari interval
yang ditetapkan dalam metode setIntervalMillis()
. 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 setMaxUpdateDelayMillis()
, 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 tempat Anda mungkin menggunakan layanan lokasi dan cara mengoptimalkan dampaknya terhadap masa pakai baterai untuk kasus tersebut.