Gerçek yaşam senaryoları için konum kullanımını optimize etme

Bu bölümde, bazı tipik konum toplama senaryolarının yanı sıra coğrafi sınır çizme ve çok kaynaklı konum sağlayıcı API'lerinin en iyi şekilde kullanılmasına yönelik öneriler açıklanmaktadır.

Kullanıcı tarafından görülebilen veya ön plandaki güncellemeler

Örnek: Çok düşük gecikme süresiyle sık ve doğru güncellemelere ihtiyaç duyan bir harita uygulaması. Tüm güncellemeler ön planda gerçekleşir: Kullanıcı bir etkinliği başlatır, konum verilerini kullanır ve kısa bir süre sonra etkinliği durdurur.

setPriority() yöntemini PRIORITY_HIGH_ACCURACY veya PRIORITY_BALANCED_POWER_ACCURACY değeriyle kullanın.

setIntervalMillis() yönteminde belirtilen aralık, kullanım alanına bağlıdır: Gerçek zamanlı senaryolar için değeri birkaç saniyeye ayarlayın. Diğer durumlarda ise birkaç dakikayla sınırlayın (pil kullanımını en aza indirmek için yaklaşık iki dakika veya daha uzun bir süre önerilir).

Cihazın konumunu öğrenme

Örnek: Bir hava durumu uygulaması, cihazın konumunu öğrenmek istiyor.

Mevcut en son konumu (nadir durumlarda boş olabilir) döndüren getLastLocation() yöntemini kullanın. Bu yöntem, konum bilgisini almanın basit bir yolunu sunar ve konum güncellemelerini aktif olarak istemeyle ilişkili maliyetlere neden olmaz. getLastLocation() tarafından döndürülen konum makul ölçüde güncel olduğunda true değerini döndüren isLocationAvailable() yöntemiyle birlikte kullanın.

Kullanıcı belirli bir konumdayken güncellemeleri başlatma

Örnek: Kullanıcı iş yerine, evine veya başka bir konuma belirli bir mesafedeyken güncelleme isteme.

Coğrafi sınır çizmeyi, çok kaynaklı konum sağlayıcı güncellemeleriyle birlikte kullanın. Uygulama, coğrafi sınıra giriş tetikleyicisi aldığında güncellemeleri isteyin ve uygulama, coğrafi sınırdan çıkış tetikleyicisi aldığında güncellemeleri kaldırın. Bu sayede uygulama, yalnızca kullanıcı tanımlı bir alana girdiğinde daha ayrıntılı konum güncellemeleri alır.

Bu senaryo için tipik iş akışı, coğrafi sınıra girildiğinde bir bildirim göstermeyi ve kullanıcı bildirime dokunduğunda güncelleme isteğinde bulunacak kodu içeren bir etkinliği başlatmayı içerebilir.

Kullanıcının etkinlik durumuna göre güncellemeleri başlatma

Örnek: Yalnızca kullanıcı araç veya bisiklet kullanırken güncelleme isteme.

Hareket Tanıma API'yi çok kaynaklı konum sağlayıcı güncellemeleriyle birlikte kullanın. Hedeflenen etkinlik algılandığında güncellemeleri isteyin ve kullanıcı bu etkinliği gerçekleştirmeyi bıraktığında güncellemeleri kaldırın.

Bu kullanım alanının tipik iş akışı, algılanan etkinlik için bir bildirim göstermeyi ve kullanıcı bildirime dokunduğunda güncelleme isteğinde bulunacak kodu içeren bir etkinliği başlatmayı içerebilir.

Coğrafi alanlara bağlı, uzun süreli arka planda konum güncellemeleri

Örnek: Kullanıcı, cihaz bir perakendecinin yakınındayken bildirim almak istiyor.

Bu, coğrafi sınır çizme için mükemmel bir kullanım alanıdır. Kullanım alanı neredeyse kesin olarak arka plan konumunu içerdiğinden addGeofences(GeofencingRequest, PendingIntent) yöntemini kullanın.

Aşağıdaki yapılandırma seçeneklerini ayarlamanız gerekir:

  • Bekleme geçişlerini izliyorsanız yaklaşık beş dakika veya daha kısa bir değer ileten setLoiteringDelay() yöntemini kullanın.

  • setNotificationResponsiveness() yöntemini kullanarak yaklaşık beş dakikalık bir değer iletin. Ancak uygulamanız yanıt verme süresindeki ek gecikmeyi yönetebiliyorsa yaklaşık on dakikalık bir değer kullanabilirsiniz.

Bir uygulama aynı anda en fazla 100 coğrafi sınır kaydedebilir. Bir uygulamanın çok sayıda perakendeci seçeneğini izlemek istediği bir kullanım alanında, uygulama büyük bir coğrafi sınır (şehir düzeyinde) kaydedebilir ve daha büyük coğrafi sınır içindeki mağazalar için daha küçük coğrafi sınırları (şehir içindeki konumlar için) dinamik olarak kaydedebilir. Kullanıcı büyük bir coğrafi sınıra girdiğinde daha küçük coğrafi sınırlar ekleyin. Kullanıcı daha büyük coğrafi sınırdan çıktığında daha küçük coğrafi sınırları kaldırın ve yeni bir alan için coğrafi sınırları yeniden kaydedin.

Görünür bir uygulama bileşeni olmadan uzun süre çalışan arka plan konum güncellemeleri

Örnek: Konumu pasif olarak izleyen bir uygulama

Mümkünse setPriority() yöntemini PRIORITY_PASSIVE seçeneğiyle kullanın. Bu yöntem neredeyse hiç pil tüketmez. PRIORITY_PASSIVE kullanılamıyorsa PRIORITY_BALANCED_POWER_ACCURACY veya PRIORITY_LOW_POWER kullanın ancak sürekli arka plan çalışmaları için PRIORITY_HIGH_ACCURACY kullanmaktan kaçının. Bu seçenek, pilin önemli ölçüde tükenmesine neden olur.

Daha fazla konum verisine ihtiyacınız varsa setIntervalMillis() yöntemine ilettiğiniz değerden daha küçük bir değer ileterek setMinUpdateIntervalMillis() yöntemini çağırıp pasif konumu kullanın. PRIORITY_PASSIVE seçeneğiyle birlikte kullanıldığında pasif konum, diğer uygulamalar tarafından hesaplanan konumu ek ücret ödemeden sunabilir.

setMaxUpdateDelayMillis() yöntemini kullanarak biraz gecikme ekleyip sıklığı azaltın. Örneğin, setIntervalMillis() yöntemini yaklaşık 10 dakikalık bir değerle kullanıyorsanız setMaxUpdateDelayMillis() yöntemini 30 ila 60 dakikalık bir değerle çağırmayı düşünebilirsiniz. Bu seçenekler kullanıldığında uygulamanız için konum yaklaşık her 10 dakikada bir hesaplanır ancak uygulama yalnızca her 30 ila 60 dakikada bir uyandırılır ve bazı konum verileri toplu güncelleme olarak sunulur. Bu yaklaşım, daha fazla veri ve daha iyi pil performansı için gecikme süresini artırır.

Kullanıcı diğer uygulamalarla etkileşimde bulunurken sık sık yüksek doğrulukta güncellemeler

Örnek: Kullanıcı ekranı kapattığında veya farklı bir uygulama açtığında çalışmaya devam eden bir navigasyon ya da fitness uygulaması.

Ön plan hizmeti kullanın. Uygulamanız kullanıcı adına yüksek maliyetli bir işlem yapacaksa kullanıcıyı bu işlemden haberdar etmeniz önerilir. Ön plan hizmeti için kalıcı bir bildirim gerekir. Daha fazla bilgi için Bildirimlere Genel Bakış başlıklı makaleyi inceleyin.