Sebagai upaya mengurangi konsumsi daya, Android 8.0 (API level 26) membatasi frekuensi aplikasi dapat mengambil lokasi pengguna saat ini saat aplikasi berjalan di latar belakang. Dalam kondisi ini, aplikasi hanya dapat menerima pembaruan lokasi beberapa kali setiap jam.
Catatan: Batasan ini berlaku untuk semua aplikasi yang digunakan pada perangkat yang menjalankan Android 8.0 (API level 26) atau yang lebih tinggi, apa pun versi SDK target aplikasi.
Perilaku pengambilan lokasi ini sangat penting untuk diingat jika aplikasi Anda mengandalkan notifikasi real-time atau deteksi gerakan saat berjalan di latar belakang.
Perilaku aplikasi latar depan dipertahankan
Jika aplikasi berada di latar depan pada perangkat yang menjalankan Android 8.0 (API level 26), perilaku pembaruan lokasi akan sama seperti pada Android 7.1.1 (API level 25) dan yang lebih rendah.
Peringatan: Jika aplikasi Anda mengambil pembaruan lokasi hampir real-time dalam jangka waktu lama, masa pakai baterai perangkat akan menjadi jauh lebih singkat.
Menyempurnakan perilaku lokasi aplikasi
Pertimbangkan apakah kasus penggunaan aplikasi Anda yang berjalan di latar belakang tidak berhasil sama sekali jika aplikasi tidak sering menerima pembaruan lokasi. Jika demikian, Anda dapat lebih sering mengambil pembaruan lokasi dengan melakukan salah satu tindakan berikut:
- Bawa aplikasi Anda ke latar depan.
-
Mulai layanan latar depan di aplikasi Anda dengan memanggil
startForegroundService()
. Saat layanan latar depan tersebut aktif, layanan akan muncul sebagai notifikasi yang sedang berlangsung di area notifikasi.Perhatian: Jika aplikasi Anda memulai layanan latar depan saat berjalan di latar belakang pada perangkat yang menjalankan Android 11 (API level 30) atau yang lebih tinggi, aplikasi Anda tidak dapat mengakses informasi lokasi kecuali jika pengguna telah memberikan izin
ACCESS_BACKGROUND_LOCATION
ke aplikasi Anda. Untuk informasi selengkapnya, lihat panduan tentang batasan saat digunakan yang terkait dengan layanan latar depan. -
Gunakan elemen Geofencing API, seperti
GeofencingClient
, yang dioptimalkan untuk meminimalkan penggunaan daya. - Gunakan pemroses lokasi pasif, yang dapat menerima pembaruan lokasi lebih cepat jika ada aplikasi latar depan yang meminta pembaruan lokasi dengan kecepatan lebih tinggi.
Catatan: Jika aplikasi Anda memerlukan akses ke histori lokasi yang
berisi pembaruan frekuensi waktu, gunakan versi batch elemen Fused Location
Provider API, seperti antarmuka
FusedLocationProviderApi
. Saat aplikasi Anda berjalan di latar belakang, API ini akan menerima lokasi pengguna lebih sering daripada API non-batch. Namun, perlu diingat bahwa aplikasi Anda masih menerima pembaruan dalam batch hanya beberapa kali setiap jam.
API yang terpengaruh
Perubahan pada perilaku pengambilan lokasi di aplikasi latar belakang akan memengaruhi API berikut:
- Fused Location Provider (FLP)
-
-
Jika aplikasi Anda berjalan di latar belakang, layanan sistem lokasi akan menghitung lokasi baru untuk aplikasi Anda hanya beberapa kali setiap jam. Hal ini terjadi meskipun aplikasi Anda meminta pembaruan lokasi yang lebih sering.
Namun, dengan menggunakan versi batch FLP, Anda memiliki akses ke lebih banyak histori lokasi frekuensi waktu setelah aplikasi menerima pembaruan batch, yang juga terjadi hanya beberapa kali setiap jam.
- Jika aplikasi Anda berjalan di latar depan, tidak ada perubahan frekuensi pengambilan sampel lokasi dibandingkan dengan Android 7.1.1 (API level 25).
-
- Pembatasan Wilayah
-
- Aplikasi latar belakang dapat menerima peristiwa transisi pembatasan wilayah yang lebih sering daripada update dari Fused Location Provider.
- Rata-rata kemampuan respons untuk peristiwa pembatasan wilayah adalah setiap kurang lebih beberapa menit.
- Pengukuran GNSS dan Pesan Navigasi GNSS
-
- Saat aplikasi Anda berada di latar belakang, callback yang terdaftar untuk
menerima output dari
GnssMeasurement
danGnssNavigationMessage
akan berhenti dieksekusi.
- Saat aplikasi Anda berada di latar belakang, callback yang terdaftar untuk
menerima output dari
- Pengelola Lokasi
-
-
Pembaruan lokasi disediakan untuk aplikasi latar belakang hanya beberapa kali setiap jam.
Catatan: Jika aplikasi Anda berjalan di perangkat yang telah diinstal layanan Google Play, sebaiknya gunakan Fused Location Provider (FLP).
-
- Pengelola Wi-Fi
-
Metode
startScan()
melakukan pemindaian penuh untuk aplikasi latar belakang hanya beberapa kali setiap jam. Jika aplikasi latar belakang memanggil kembali metode tersebut tidak lama setelah itu, classWifiManager
akan menyediakan hasil yang telah di-cache dari pemindaian sebelumnya.