Limity dostępu do lokalizacji w tle
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Aby ograniczyć zużycie energii, Android 8.0 (poziom interfejsu API 26) ogranicza częstotliwość pobierania przez aplikację bieżącej lokalizacji użytkownika, gdy aplikacja działa w tle. W takich warunkach aplikacje mogą otrzymywać aktualizacje lokalizacji tylko kilka razy na godzinę.
Uwaga: te ograniczenia dotyczą wszystkich aplikacji używanych na urządzeniach z Androidem 8.0 (poziom interfejsu API 26) lub nowszym niezależnie od docelowej wersji pakietu SDK aplikacji.
Warto pamiętać o tym zachowaniu podczas pobierania lokalizacji, jeśli aplikacja korzysta z alertów w czasie rzeczywistym lub wykrywania ruchu podczas działania w tle.
Zachowanie aplikacji działającej w pierwszym planie jest zachowane
Jeśli aplikacja jest na pierwszym planie na urządzeniu z Androidem 8.0 (poziom interfejsu API 26),
zachowanie aktualizacji lokalizacji jest takie samo jak w przypadku Androida 7.1.1 (poziom interfejsu API 25) lub starszego.
Ostrzeżenie: jeśli aplikacja przez długi czas pobiera aktualizacje lokalizacji w czasie rzeczywistym, czas pracy baterii urządzenia znacznie się skróci.
Dostosowywanie zachowania aplikacji dotyczącego lokalizacji
Zastanów się, czy przypadki użycia aplikacji działającej w tle mogą się nie udać, jeśli aplikacja otrzymuje rzadkie aktualizacje lokalizacji. W takim przypadku możesz częściej pobierać aktualizacje lokalizacji, wykonując jedną z tych czynności:
- Przenieś aplikację na pierwszy plan.
-
Uruchom usługę na pierwszym planie w aplikacji, wywołując funkcję
startForegroundService()
. Gdy taka usługa na pierwszym planie jest aktywna, pojawia się jako ciągłe powiadomienie w obszarze powiadomień.
Uwaga: jeśli aplikacja uruchamia usługę na pierwszym planie podczas działania w tle na urządzeniu z Androidem 11 (poziom interfejsu API 30) lub nowszym, nie może uzyskać dostępu do informacji o lokalizacji, chyba że użytkownik przyznał jej uprawnienie ACCESS_BACKGROUND_LOCATION
. Więcej informacji znajdziesz w wskazówkach dotyczących ograniczeń podczas używania, które są związane z usługami na pierwszym planie.
-
Korzystaj z elementów interfejsu Geofencing API, takich jak
GeofencingClient
, które są zoptymalizowane pod kątem minimalizowania zużycia energii.
-
Użyj pasywnego odbiornika lokalizacji, który może otrzymywać szybsze aktualizacje lokalizacji, jeśli aplikacje na pierwszym planie żądają ich szybciej.
Uwaga: jeśli Twoja aplikacja potrzebuje dostępu do historii lokalizacji, która zawiera częste aktualizacje, użyj wersji zbiorczej elementów interfejsu Fused Location Provider API, takiej jak FusedLocationProviderApi
. Gdy aplikacja działa w tle, ten interfejs API otrzymuje lokalizację użytkownika częściej niż interfejs API bez przetwarzania w partiach. Pamiętaj jednak, że aplikacja nadal otrzymuje aktualizacje w partiach tylko kilka razy na godzinę.
Interfejsy API, których dotyczy zalecenie
Zmiany zachowania podczas pobierania lokalizacji w aplikacjach działających w tle wpływają na te interfejsy API:
- Dostawca uśrednionej lokalizacji (FLP)
-
-
Jeśli aplikacja działa w tle, usługa systemu lokalizacji oblicza nową lokalizację aplikacji tylko kilka razy na godzinę. Dzieje się tak nawet wtedy, gdy aplikacja prosi o częstsze aktualizacje lokalizacji.
Korzystając z
wersji zbiorczej FLP, masz dostęp do bardziej szczegółowej historii lokalizacji po tym, jak aplikacja otrzyma aktualizację zbiorczą, która również występuje tylko kilka razy na godzinę.
- Jeśli aplikacja działa na pierwszym planie, częstotliwość próbkowania lokalizacji nie ulegnie zmianie w porównaniu z Androidem 7.1.1 (poziom interfejsu API 25).
- Geofencing
-
- Aplikacje działające w tle mogą otrzymywać zdarzenia przejścia geofencingu częściej niż aktualizacje od dostawcy zjednoczonej lokalizacji.
- Średnia częstotliwość reagowania na zdarzenie geofencingu to co kilka minut.
- Pomiary GNSS i wiadomości nawigacyjne GNSS
-
- Menedżer lokalizacji
-
-
Aktualizacje lokalizacji są udostępniane aplikacjom działającym w tle tylko kilka razy na godzinę.
Uwaga: jeśli aplikacja działa na urządzeniu z zainstalowanymi Usługami Google Play, zdecydowanie zalecamy użycie połączonego dostawcy lokalizacji (FLP).
- Menedżer Wi-Fi
- Metoda
startScan()
wykonuje pełne skanowanie aplikacji działających w tle tylko kilka razy na godzinę. Jeśli aplikacja działająca w tle wywoła metodę ponownie w krótkim czasie, klasa WifiManager
udostępni wyniki z pamięci podręcznej z poprzedniego skanowania.
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-27 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 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."]]