Sebagai upaya mengurangi konsumsi daya, Android 8.0 (API level 26) akan membatasi seberapa sering aplikasi latar belakang bisa menerima lokasi pengguna saat ini. Aplikasi bisa menerima pembaruan lokasi hanya beberapa kali setiap jam.
Catatan: Batasan ini berlaku untuk semua aplikasi yang digunakan pada perangkat yang menjalankan Android 8.0 (API level 26) atau versi 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.
Sistem akan membedakan antara aplikasi latar depan dan latar belakang. Aplikasi dianggap berada di latar depan jika salah satu dari pernyataan berikut benar:
- Aplikasi memiliki aktivitas yang terlihat, baik yang telah dimulai maupun yang dihentikan sementara.
- Aplikasi memiliki layanan latar depan.
-
Aplikasi latar depan lainnya terhubung ke aplikasi tersebut, baik melalui pengikatan ke salah satu layanannya maupun melalui penggunaan salah satu penyedia kontennya. Misalnya, jika aplikasi latar depan mengikat ke salah satu komponen berikut dalam aplikasi lain, aplikasi lain akan dianggap berada di latar depan:
- Editor metode input (IME)
- Layanan wallpaper
- Pemroses notifikasi
- Layanan suara atau teks
Jika tidak ada satu pun dari persyaratan ini yang benar, aplikasi akan dianggap berada 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 menerima pembaruan lokasi hampir secara real-time dalam jangka waktu lama, masa pakai baterai perangkat akan menjadi jauh lebih singkat.
Menyempurnakan perilaku lokasi aplikasi
Sebaiknya kasus penggunaan aplikasi Anda yang berjalan di latar belakang tidak benar-benar gagal jika aplikasi tidak sering menerima pembaruan lokasi. Jika demikian, Anda bisa lebih sering menerima 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. -
Gunakan elemen Geofencing API, seperti
GeofencingClient
yang dioptimalkan untuk meminimalkan penggunaan daya. - Gunakan pemroses lokasi pasif, yang bisa menerima pembaruan lokasi lebih cepat jika ada aplikasi latar depan yang meminta 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. Perlu diingat, aplikasi Anda masih menerima pembaruan dalam batch hanya beberapa kali setiap jam.
API yang terpengaruh
Perubahan pada perilaku penerimaan 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. Itulah yang terjadi bahkan ketika aplikasi Anda meminta pembaruan lokasi yang lebih sering.
Dengan 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 bisa menerima kejadian transisi pembatasan wilayah yang lebih sering daripada update dari Fused Location Provider.
- Rata-rata kemampuan respons untuk kejadian pembatasan wilayah adalah setiap kurang lebih beberapa menit
- Pengukuran GNSS dan Pesan Navigasi GNSS
-
- Jika aplikasi Anda berada di latar belakang, callback yang telah didaftarkan untuk menerima keluaran dari
GnssMeasurement
danGnssNavigationMessage
akan berhenti mengeksekusi.
- Jika aplikasi Anda berada di latar belakang, callback yang telah didaftarkan untuk menerima keluaran 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, Anda sangat direkomendasikan untuk menggunakan Fused Location Provider (FLP).
-
- Pengelola Wi-Fi
-
Metode
startScan()
akan melakukan pemindaian penuh pada 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.