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

Bu bölümde, coğrafi sınırlama ve birleştirilmiş konum sağlayıcı API'lerinin en iyi şekilde kullanılmasıyla ilgili önerilerin yanı sıra bazı tipik konum toplama senaryoları açıklanmaktadır.

Kullanıcı tarafından görülebilen veya ön planda yapılan güncellemeler

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

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

setInterval() 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; aksi takdirde birkaç dakikayla sınırlandırın (pil kullanımını en aza indirmek için yaklaşık iki dakika veya daha uzun bir süre önerilir).

Cihazın konumunu bilme

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

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

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

Örnek: Kullanıcı iş yerine, eve veya başka bir konuma belirli bir mesafedeyken güncelleme isteğinde bulunma.

Birleştirilmiş konum sağlayıcı güncellemeleriyle birlikte coğrafi sınırlama kullanın. Uygulama bir coğrafi sınır giriş tetikleyicisi aldığında güncelleme isteğinde bulunun ve uygulama bir coğrafi sınır çıkış tetikleyicisi aldığında güncellemeleri kaldırın. Bu sayede uygulama, yalnızca kullanıcı tanımlanmış bir alana girdiğinde daha ayrıntılı konum güncellemeleri alır.

Bu senaryoya yönelik tipik iş akışı, coğrafi çit giriş geçişi sırasında bir bildirim göstermeyi ve kullanıcı bildirime dokunduğunda güncelleme isteğinde bulunacak kod içeren bir etkinlik başlatmayı içerebilir.

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

Örnek: Güncellemeleri yalnızca kullanıcı araba kullanırken veya bisiklet sürerken isteme.

Birleştirilmiş konum sağlayıcı güncellemeleriyle birlikte Hareket Tanıma API'sini kullanın. Hedeflenen etkinlik algılandığında güncelleme isteğinde bulunun ve kullanıcı bu etkinliği gerçekleştirmeyi bıraktığında güncellemeleri kaldırın.

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

Coğrafi alanlara bağlı uzun süre çalışan arka planda konum güncellemeleri

Örnek: Kullanıcı, cihaz bir perakendecinin yakınında olduğunda bildirim almak istiyor.

Bu, coğrafi sınırlama için mükemmel bir kullanım alanıdır. Kullanım alanı neredeyse kesinlikle arka planda konum bilgisini içerdiğinden addGeofences(GeofencingRequest, PendingIntent) yöntemini kullanın.

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

  • Ziyaret süresi geçişlerini izliyorsanız yaklaşık beş dakika veya daha kısa bir değer göndererek setLoiteringDelay() yöntemini kullanın.

  • Yaklaşık beş dakikalık bir değer göndererek setNotificationResponsiveness() değerini kullanın. Ancak uygulamanız yanıt vermede ek gecikmeyi yönetebiliyorsa yaklaşık on dakikalık bir değer kullanmayı düşünün.

Bir uygulama tek seferde en fazla 100 coğrafi çit 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 çit (şehir düzeyinde) kaydetmek ve daha büyük coğrafi çit içindeki mağazalar için daha küçük coğrafi çitleri (şehir içindeki konumlar için) dinamik olarak kaydetmek isteyebilir. Kullanıcı büyük bir coğrafi sınıra girdiğinde daha küçük coğrafi sınırlar ekleyin; kullanıcı 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 planda konum güncellemeleri

Örnek: Konumu pasif olarak izleyen bir uygulama

Mümkünse PRIORITY_NO_POWER seçeneğiyle birlikte setPriority() yöntemini kullanın. Bu yöntem, pil tüketimini neredeyse hiç artırmaz. PRIORITY_NO_POWER kullanılamıyorsa PRIORITY_BALANCED_POWER_ACCURACY veya PRIORITY_LOW_POWER seçeneğini kullanın. Ancak sürekli arka plan çalışması için PRIORITY_HIGH_ACCURACY seçeneğini kullanmaktan kaçının. Bu seçenek, pili önemli ölçüde tüketir.

Daha fazla konum verisi gerekiyorsa setInterval() yöntemine ilettiğiniz değerden daha küçük bir değer göndererek setFastestInterval() yöntemini çağırarak pasif konumu kullanın. Pasif konum, PRIORITY_NO_POWER seçeneğiyle birlikte kullanıldığında diğer uygulamalar tarafından hesaplanan konumu fırsatçı bir şekilde ek ücret ödemeden sağlayabilir.

setMaxWaitTime() yöntemini kullanarak gecikmeler ekleyerek sıklığı azaltın. Örneğin, setinterval() yöntemini yaklaşık 10 dakikalık bir değerle kullanıyorsanız setMaxWaitTime() 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 10 dakikada bir hesaplanır ancak uygulama yalnızca 30 ila 60 dakikada bir uyandırılır ve bazı konum verileri toplu güncelleme olarak kullanılabilir. Bu yaklaşımda gecikme, daha fazla veri ve daha iyi pil performansı için değiştirilir.

Kullanıcı diğer uygulamalarla etkileşimde bulunurken sık sık yüksek doğrulukla güncelleme yapılması

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

Ön plan hizmeti kullanın. Uygulamanız kullanıcı adına pahalı bir işlem yapacaksa kullanıcıyı bu işlemden haberdar etmeniz önerilen en iyi uygulamadır. Ön plan hizmetleri için kalıcı bildirim gerekir. Daha fazla bilgi için Bildirimlere Genel Bakış başlıklı makaleyi inceleyin.