Sebagai upaya untuk mengurangi konsumsi daya, Android 8.0 (API level 26) membatasi seberapa sering 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 di perangkat yang menjalankan Android 8.0 (level API 26) atau yang lebih tinggi, apa pun versi SDK target aplikasinya.
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 sama seperti pada Android 7.1.1 (API level 25) dan yang lebih rendah.
Peringatan: Jika aplikasi Anda mengambil pembaruan lokasi hampir secara real time dalam jangka waktu yang 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 dapat berhasil sama sekali jika aplikasi Anda tidak sering menerima update 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 berkelanjutan 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 pengguna telah memberikan izin
ACCESS_BACKGROUND_LOCATION
ke aplikasi Anda. Untuk informasi selengkapnya, lihat panduan tentang pembatasan 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 yang lebih cepat.
Catatan: Jika aplikasi Anda memerlukan akses ke histori lokasi yang berisi update frekuensi waktu, gunakan versi batch elemen Fused Location
Provider API, seperti
antarmuka
FusedLocationProviderApi
. Saat aplikasi Anda berjalan di latar belakang, API ini akan lebih sering menerima
lokasi pengguna daripada API non-batch. Namun, perlu diingat bahwa aplikasi Anda masih menerima update dalam batch hanya beberapa kali setiap jam.
API yang terpengaruh
Perubahan pada perilaku pengambilan lokasi di aplikasi latar belakang memengaruhi API berikut:
- Penyedia Lokasi Gabungan (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 akan terjadi bahkan saat 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 sampling lokasi dibandingkan dengan Android 7.1.1 (API level 25).
-
- Pembatasan wilayah
-
- Aplikasi latar belakang bisa lebih sering menerima peristiwa transisi pembatasan wilayah daripada update dari Penyedia Lokasi Gabungan.
- Respons rata-rata untuk peristiwa pembatasan wilayah adalah kurang lebih setiap beberapa menit.
- Pengukuran GNSS dan Pesan Navigasi GNSS
-
- Saat aplikasi Anda berada di latar belakang, callback yang telah didaftarkan untuk menerima output dari
GnssMeasurement
danGnssNavigationMessage
akan berhenti dijalankan.
- Saat aplikasi Anda berada di latar belakang, callback yang telah didaftarkan untuk menerima output dari
- Pengelola Lokasi
-
-
Update lokasi diberikan untuk aplikasi latar belakang hanya beberapa kali setiap jam.
Catatan: Jika aplikasi Anda berjalan di perangkat yang telah diinstal layanan Google Play, sebaiknya Anda menggunakan 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.