Batas Lokasi Latar Belakang

Sebagai upaya mengurangi konsumsi daya, Android 8.0 membatasi seberapa sering aplikasi latar belakang bisa menerima lokasi pengguna saat ini, apa pun versi SDK yang ditargetkan aplikasi Anda.

Perilaku pengambilan lokasi ini sangat penting untuk diingat jika aplikasi Anda mengandalkan pemberitahuan real-time atau deteksi gerakan saat berjalan di latar belakang.

Penting: Sebagai titik mulai, kami membiarkan aplikasi latar belakang menerima pembaruan lokasi hanya beberapa kali setiap jam. Kami terus menyempurnakan interval pembaruan lokasi di Preview berdasarkan pada dampak sistem dan masukan dari developer.

Sistem membedakan antara aplikasi latar depan dan latar belakang. Aplikasi dianggap berada di latar depan jika berlaku salah satu dari berikut ini:

  • Aplikasi memiliki aktivitas yang terlihat, baik yang telah dimulai maupun yang dihentikan sementara.
  • Aplikasi memiliki layanan latar depan.
  • Aplikasi latar depan yang lain terhubung ke aplikasi tersebut, baik melalui pengikatan ke salah satu layanannya maupun melalui penggunaan salah satu penyedia materinya.

Jika tidak satu pun dari ketentuan ini yang berlaku, 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, perilaku pembaruan lokasi akan sama seperti di Android 7.1.1 (API level 25) dan yang lebih rendah.

Peringatan: Jika aplikasi Anda mengambil pembaruan lokasi hampir secara real-time selama jangka waktu yang panjang, daya tahan baterai perangkat akan banyak berkurang.

Menyempurnakan perilaku lokasi aplikasi Anda

Pertimbangkan apakah kasus penggunaan aplikasi Anda untuk berjalan di latar belakang tidak bisa berhasil sama sekali jika aplikasi tidak sering menerima pembaruan lokasi. Jika demikian halnya, Anda bisa lebih sering mengambil pembaruan lokasi dengan melakukan salah satu tindakan berikut:

  • Bawa aplikasi Anda ke latar depan.
  • Gunakan layanan latar depan di aplikasi Anda. Bila layanan ini aktif, aplikasi Anda harus menampilkan notifikasi terus-menerus di area notifikasi.
  • Gunakan elemen-elemen Geofencing API, seperti antarmuka GeofencingApi, yang dioptimalkan untuk meminimalkan penggunaan daya.
  • Gunakan listener lokasi pasif, yang dapat menerima pembaruan lokasi lebih cepat jika ada aplikasi latar depan yang meminta lokasi pada kecepatan yang lebih tinggi.

Catatan: Jika aplikasi Anda membutuhkan akses ke riwayat lokasi yang berisi pembaruan kekerapan, gunakan versi batch dari elemen Fused Location Provider API, seperti antarmuka FusedLocationProviderApi. Bila aplikasi Anda berjalan di latar belakang, API ini akan menerima lokasi pengguna lebih sering daripada API non-batch. Akan tetapi ingat, aplikasi Anda tetap menerima pembaruan berupa batch hanya beberapa kali setiap jam.

API yang terpengaruh

Perubahan pada perilaku pengambilan lokasi di aplikasi latar belakang 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, sesuai dengan interval yang didefinisikan dalam perubahan perilaku Android 8.0. Itulah yang terjadi bahkan bila aplikasi Anda meminta pembaruan lokasi yang lebih sering.
  • Jika aplikasi Anda berjalan di latar depan, maka tidak ada perubahan laju sampling lokasi dibandingkan Android 7.1.1 (API level 25).
Pembatasan Wilayah
  • Aplikasi latar belakang bisa menerima kejadian transisi geofencing lebih sering daripada pembaruan dari Fused Location Provider.
  • Rata-rata responsivitas untuk kejadian pembatasan wilayah adalah setiap beberapa menit atau kurang lebih.
Pengukuran GNSS dan Pesan Navigasi GNSS
Pengelola Lokasi
  • Pembaruan lokasi disediakan pada aplikasi latar belakang hanya beberapa kali setiap jam, sesuai dengan interval yang didefinisikan dalam perubahan perilaku Android 8.0.

    Catatan: Jika aplikasi Anda berjalan pada perangkat yang telah dipasangi Google Play Services, Anda sangat disarankan menggunakan Fused Location Provider (FLP) sebagai gantinya.

Pengelola Wi-Fi
Metode startScan() melakukan pemindaian penuh terhadap aplikasi latar belakang hanya beberapa kali setiap jam. Jika aplikasi latar belakang memanggil lagi metode tersebut tidak lama setelah itu, kelas WifiManager akan menyediakan hasil yang telah di-cache dari pemindaian sebelumnya.