Android 8.0 (API düzeyi 26) güç tüketimini azaltmak amacıyla, arka planda çalışırken bir uygulamanın kullanıcının mevcut konumunu alma sıklığını sınırlar. Bu koşullar altında uygulamalar konum güncellemelerini saatte yalnızca birkaç kez alabilir.
Not: Bu sınırlamalar, uygulamanın hedef SDK sürümü ne olursa olsun Android 8.0 (API düzeyi 26) veya sonraki sürümleri çalıştıran cihazlarda kullanılan tüm uygulamalar için geçerlidir.
Uygulamanız arka planda çalışırken gerçek zamanlı uyarılara veya hareket algılamaya dayanıyorsa bu konum alma davranışının akılda tutulması özellikle önemlidir.
Ön plan uygulama davranışı korunur
Android 8.0 (API düzeyi 26) çalıştıran bir cihazda ön planda bir uygulama varsa konum güncelleme davranışı Android 7.1.1 (API düzeyi 25) ve önceki sürümlerdekiyle aynı olur.
Uyarı: Uygulamanız, uzun bir süre içinde neredeyse gerçek zamanlı konum güncellemeleri alırsa cihazın pil ömrü önemli ölçüde kısalır.
Uygulamanızın konum davranışını ayarlama
Uygulamanız nadiren konum güncellemeleri alıyorsa arka planda çalışmayla ilgili kullanım alanlarının başarılı olup olamayacağını düşünün. Bu durumda, aşağıdaki işlemlerden birini gerçekleştirerek konum güncellemelerini daha sık alabilirsiniz:
- Uygulamanızı ön plana taşıyın.
-
startForegroundService()
numaralı telefonu arayarak uygulamanızda bir ön plan hizmeti başlatın. Böyle bir ön plan hizmeti etkin olduğunda, bildirim alanında sürekli bir bildirim olarak görünür.Dikkat: Uygulamanız, Android 11 (API düzeyi 30) veya sonraki sürümleri çalıştıran bir cihazda arka planda çalışırken ön plan hizmeti başlatırsa kullanıcı, uygulamanıza
ACCESS_BACKGROUND_LOCATION
izni vermediği sürece konum bilgilerine erişemez. Daha fazla bilgi için ön plan hizmetleriyle ilişkili kullanımdayken kısıtlamalar hakkındaki kılavuzu inceleyin. -
Güç kullanımını en aza indirmek için optimize edilmiş
GeofencingClient
gibi Geofencing API öğelerini kullanın. - Daha hızlı konum güncellemesi isteyen ön plan uygulamaları varsa daha hızlı konum güncellemeleri alabilecek bir pasif konum dinleyici kullanın.
Not: Uygulamanızın, sık güncellemeler içeren konum geçmişine erişmesi gerekiyorsa FusedLocationProviderApi
arayüzü gibi Çok Kaynaklı Konum Sağlayıcı API öğelerinin toplu sürümünü kullanın. Uygulamanız arka planda çalışırken bu API, kullanıcının konumunu toplu olmayan API'ye göre daha sık alır. Bununla birlikte, uygulamanızın her saat başı yalnızca birkaç kez güncelleme almaya devam ettiğini unutmayın.
Etkilenen API'ler
Arka plan uygulamalarındaki konum alma davranışında yapılan değişiklikler şu API'leri etkilemektedir:
- Çok Kaynaklı Konum Sağlayıcı (FLP)
-
-
Uygulamanız arka planda çalışıyorsa konum sistemi hizmeti, uygulamanız için yeni bir konumu saatte yalnızca birkaç kez hesaplar. Uygulamanız daha sık konum güncellemesi istese bile bu durum geçerlidir.
Bununla birlikte, FLP'nin toplu sürümünü kullandığınızda uygulamanız, saatte yalnızca birkaç kez gerçekleşen bir toplu güncelleme aldıktan sonra daha sık konum geçmişine erişebilirsiniz.
- Uygulamanız ön planda çalışıyorsa Android 7.1.1'e (API düzeyi 25) kıyasla konum örnekleme hızlarında herhangi bir değişiklik olmaz.
-
- Coğrafi sınır çizme
-
- Arka plan uygulamaları, coğrafi sınır çizme geçiş etkinliklerini Çok Kaynaklı Konum Sağlayıcı'dan gelen güncellemelerden daha sık alabilir.
- Coğrafi sınır çizme etkinliklerinin ortalama yanıt verme süresi yaklaşık birkaç dakikada birdir.
- GNSS Ölçümleri ve GNSS Gezinme Mesajları
-
- Uygulamanız arka plandayken
GnssMeasurement
veGnssNavigationMessage
kaynağından çıkış almak için kaydedilmiş geri çağırmalar yürütülmeyi durdurur.
- Uygulamanız arka plandayken
- Konum Yöneticisi
-
-
Konum güncellemeleri, arka plan uygulamalarına saatte yalnızca birkaç kez sağlanır.
Not: Uygulamanız Google Play Hizmetleri'nin yüklü olduğu bir cihazda çalışıyorsa bunun yerine Çok Kaynaklı Konum Sağlayıcı'yı (FLP) kullanmanız önemle tavsiye edilir.
-
- Kablosuz Ağ Yöneticisi
startScan()
yöntemi, arka plan uygulamaları için saatte yalnızca birkaç kez tam tarama yapar. Kısa süre sonra arka plan uygulaması yöntemi tekrar çağırırsaWifiManager
sınıfı önceki taramanın önbelleğe alınan sonuçlarını sağlar.