Batas Lokasi Latar Belakang
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
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
-
- 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, class WifiManager
akan menyediakan hasil yang telah di-cache dari
pemindaian sebelumnya.
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-07-27 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-07-27 UTC."],[],[],null,["# Background Location Limits\n\nIn an effort to reduce power consumption, Android 8.0 (API level 26) limits\nhow frequently an app can retrieve the user's current location while the app is\n[running in the background](/guide/background). Under these\nconditions, apps can receive location updates only a few times each hour.\n\n**Note:** These limitations apply to all apps used on devices\nrunning Android 8.0 (API level 26) or higher, **regardless of an app's\ntarget SDK version**.\n\nThis location retrieval behavior is particularly\nimportant to keep in mind if your app relies on real-time alerts or motion\ndetection while running in the background.\n\nForeground app behavior is preserved\n------------------------------------\n\n\nIf an app is in the foreground on a device running Android 8.0 (API level 26),\nthe location update behavior is the same as on Android 7.1.1 (API level\n25) and lower.\n\n**Warning:** If your app retrieves near real-time location\nupdates over a long period of time, the device's battery life becomes\nsignificantly shorter.\n\nTuning your app's location behavior\n-----------------------------------\n\nConsider whether your app's use cases for running in the background cannot\nsucceed at all if your app receives infrequent location updates. If this is the\ncase, you can retrieve location updates more frequently by performing one of the\nfollowing actions:\n\n- Bring your app to the foreground.\n- Start a [foreground\n service](/guide/components/foreground-services) in your app by calling\n [startForegroundService()](/reference/android/content/Context#startForegroundService(android.content.Intent)). When such a foreground service is active, it\n appears as an ongoing notification in the\n [notification\n area](/guide/topics/ui/notifiers/notifications).\n\n **Caution:** If your app starts a foreground service\n while running in the background on a device that runs Android 11 (API\n level 30) or higher, your app cannot access location information unless the\n user has granted the\n [`ACCESS_BACKGROUND_LOCATION`](/reference/android/Manifest.permission#ACCESS_BACKGROUND_LOCATION)\n permission to your app. For more information, view the guidance about the\n [while-in-use\n restrictions](/guide/components/foreground-services#while-in-use-restrictions) that are associated with foreground services.\n- Use elements of the Geofencing API, such as the [`GeofencingClient`](https://developers.google.com/android/reference/com/google/android/gms/location/GeofencingClient), which are optimized for minimizing power use.\n- Use a passive location listener, which may receive faster location updates if there are foreground apps requesting location updates at a faster rate.\n\n**Note:** If your app needs access to location history that\ncontains time-frequent updates, use the batched version of the Fused Location\nProvider API elements, such as the\n[`FusedLocationProviderApi`](https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderApi)\ninterface. When your app is running in the background, this API receives the\nuser's location more frequently than the non-batched API. Keep in mind, however,\nthat your app still receives updates in batches only a few times each hour.\n\nAffected APIs\n-------------\n\n\nThe changes to location retrieval behavior in background apps affect the\nfollowing APIs:\n\n[Fused\nLocation Provider (FLP)](https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderApi)\n:\n - If your app is running in the background, the location system service\n computes a new location for your app only a few times each hour. This\n is the case even when your app is requesting more frequent location\n updates.\n\n By using the\n [batched version](https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest#setMaxWaitTime(long)) of FLP, however, you have access to more\n time-frequent location history after your app receives a batch update,\n which also occurs only a few times each hour.\n - If your app is running in the foreground, there is no change in location sampling rates compared to Android 7.1.1 (API level 25).\n\nGeofencing\n:\n - Background apps can receive geofencing transition events more frequently than updates from the Fused Location Provider.\n - The average responsiveness for a geofencing event is every couple of minutes or so.\n\nGNSS Measurements and GNSS Navigation Messages\n:\n - When your app is in the background, callbacks that are registered to receive outputs from [GnssMeasurement](/reference/android/location/GnssMeasurement) and [GnssNavigationMessage](/reference/android/location/GnssNavigationMessage) stop executing.\n\nLocation Manager\n:\n - Location updates are provided to background apps only a few times\n each hour.\n\n\n **Note:** If your app is running on a device with\n Google Play services installed, it is highly recommended that you use\n the [Fused\n Location Provider (FLP)](https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderApi) instead.\n\nWi-Fi Manager\n:\n The [startScan()](/reference/android/net/wifi/WifiManager#startScan()) method\n performs a full scan for background apps only a few times each hour. If a\n background app calls the method again soon afterward, the\n [WifiManager](/reference/android/net/wifi/WifiManager) class provides cached results from the\n previous scan."]]