Milyarlarca kullanıcı için bağlantı

Dünya genelindeki kullanıcıların yarısından fazlası, uygulamanızı 2G bağlantı üzerinden deneyimler. Bu kullanıcılara daha iyi bir deneyim sunmak amacıyla verileri depolayarak, istekleri sıraya koyarak ve optimum performans için resimleri işleyerek düşük hızlı bağlantılar ve çevrimdışı çalışma için optimizasyon yapın.

Burada, bunları nasıl yapacağınızla ilgili bazı ipuçları bulabilirsiniz.

Resimleri optimize edin

Resimlerin indirilmesini kolaylaştırmanın çeşitli yolları vardır. Bunlara WebP resimleri sunma, resimleri dinamik olarak boyutlandırma ve resim yükleme kitaplıkları kullanma dahildir.

WebP resimleri yayınla

  • Görüntü yükleme sürelerini azaltmak ve ağ bant genişliğinden tasarruf etmek için ağ üzerinden WebP dosyaları sunun. WebP dosyalarının boyutu genellikle PNG ve JPG dosyalarından daha küçüktür ve en azından resim kalitesi aynıdır. WebP, kayıplı ayarlar kullansa bile orijinal resimle neredeyse aynı bir resim oluşturabilir. Android, Android 4.0'dan (API düzeyi 14: Ice Cream Sandwich) ve kayıpsız, şeffaf WebP desteği sunan Android 4.2'den (API düzeyi 17: Jelly Bean) beri kayıplı WebP desteğine sahiptir.

Resimleri dinamik olarak boyutlandırma

  • Uygulamalarınızın, cihaz spesifikasyonuna göre hedef oluşturma boyutunda resim istemesini ve sunucunuzun da uygun boyutlu resimler sağlamasını sağlayın. Bu da ağ üzerinden gönderilen verileri en aza indirir ve her bir resmi tutmak için gereken bellek miktarını azaltarak performansın artmasını ve kullanıcı memnuniyetinin artmasını sağlar.
  • Kullanıcıların resimlerin indirilmesini beklemek zorunda kaldıklarında kullanıcı deneyimi olumsuz yönde etkilenir. Uygun resim boyutlarının kullanılması bu sorunların çözülmesine yardımcı olur. Ağ türüne veya ağ kalitesine göre resim boyutu isteklerinde bulunabilirsiniz. Bu boyut, hedef oluşturma boyutundan daha küçük olabilir.
  • Önceden hesaplanmış palet değerleri veya düşük çözünürlüklü küçük resimler gibi dinamik yer tutucular, resim getirilirken kullanıcı deneyimini iyileştirebilir.

Resim yükleme kitaplıklarını kullan

  • Uygulamanız hiçbir resmi birden fazla kez getirmemelidir. Glide ve Picasso gibi resim yükleme kitaplıkları, resmi getirir, önbelleğe alır ve gerçek resimler hazır olana kadar yer tutucu resimleri göstermek için Görünümlerinize kancalar ekler. Görüntüler önbelleğe alındığından, bu kitaplıklar bir sonraki görsel istendiğinde yerel kopyayı döndürür.
  • Resim yükleme kitaplıkları, uygulama depolama alanınızın süresiz olarak büyümemesi için en yeni resimleri tutarak önbelleklerini yönetir.

Ağ iletişimi optimize edin

Optimum ağ deneyimi sunarak kullanıcı deneyimini geliştirebilirsiniz. Örneğin, uygulamanızı çevrimdışı kullanılabilir hale getirebilir, WorkManager ve Oda'yı kullanıp ağ isteklerini tekilleştirebilirsiniz.

Uygulamanızı çevrimdışı kullanılabilir hale getirme

  • Kırsal bölgelerde ve refah düzeyi daha düşük bölgelerde cihazların ağ bağlantısı kesilmesi yaygın olarak görülür. Kullanışlı bir çevrimdışı durum oluşturmak, kullanıcıların uygulamanızla her zaman etkileşimde bulunabileceği anlamına gelir. Bunu verileri yerel olarak depolayarak, verileri önbelleğe alarak ve bağlantı tekrar kurulduğunda işlem için giden istekleri sıraya koyarak yapabilirsiniz.
  • Mümkün olduğunda, uygulamalar kullanıcılara bağlantısının koptuğunu bildirmemelidir. Kullanıcı yalnızca bağlantının gerekli olduğu bir işlem gerçekleştirdiğinde bildirim alınması gerekir.
  • Bir cihazda internet bağlantısı olmadığında uygulamanız, bağlantı yeniden kurulduğunda yürütülebilecek ağ isteklerini kullanıcı adına toplu olarak oluşturmalıdır. Buna örnek olarak kullanıcıların, cihaz internete bağlı değilken bile mevcut postaları oluşturma, gönderme, okuma, taşıma ve silme olanağı tanıyan bir e-posta istemcisi verilebilir. Bu işlemler, bağlantı tekrar kurulduğunda önbelleğe alınabilir ve yürütülebilir. Bu sayede uygulama, cihazın internete bağlı olup olmamasına bakılmaksızın benzer bir kullanıcı deneyimi sunabilir.

Verileri getirmek ve önbelleğe almak için Odayı kullanma

  • Ağ koşullarından bağımsız olarak en iyi performansı gösterebilmesi için uygulamanızın tüm verileri bir veritabanı veya benzer bir yapı kullanarak diskte depoladığından emin olun. Verileri yerel bir veritabanındaki verileri önbelleğe almak için Oda kalıcı kitaplığını, cihaz bir ağ bağlantısı olduğunda bu önbelleği güncellemek için WorkManager'ı kullanın.
  • Uygulamalar, ağdan getirilen içeriği önbelleğe almalıdır. Uygulamalar başka istekte bulunmadan önce yerel olarak önbelleğe alınmış verileri görüntülemelidir. Bu, cihazın çevrimdışı veya yavaş ya da güvenilir olmayan bir ağda olması fark etmeksizin uygulamanın düzgün çalışmasını sağlar.

Ağ isteklerini tekilleştir

  • Çevrimdışı öncelikli bir mimari, başlangıçta yerel depolama alanından veri getirmeye çalışır ve bunu başaramazsa verileri ağdan ister. Ağdan alındıktan sonra veriler, daha sonra alınmaları için yerel olarak önbelleğe alınır. Bu, aynı veri parçası için yapılan ağ isteklerinin yalnızca bir kez gerçekleşmesini ve sonraki istekler yerel olarak karşılanmasını sağlar. Bunun için uzun ömürlü veriler için yerel bir veritabanı (genellikle android.database.sqlite veya SharedPreferences) kullanın.
  • Bu mimari, bir taraf ağdan önbelleğe alırken diğer taraf kullanıcıya sunmak için önbellekten veri alırken uygulamanın çevrimdışı ve çevrimiçi durumlar arasındaki akışını da basitleştirir.
  • Geçici veriler için DiskLruCache gibi sınırlı bir disk önbelleği kullanın. Normalde değişmeyen veriler, ağ üzerinden yalnızca bir kez istenmeli ve ileride kullanılmak üzere önbelleğe alınmalıdır. Resimler ve haber makaleleri veya sosyal medya gönderileri gibi geçici olmayan dokümanlar bu tür verilere örnek gösterilebilir.

Veri aktarımında ince ayar yapma

Uygulamanız daha iyi bir kullanıcı deneyimi sağlamak için ağ koşullarına farklı şekillerde uyum sağlayabilir. Örneğin, kullanıcının bilgi için bekleme süresini en aza indirmek amacıyla ağ isteklerine öncelik verebilir. Ayrıca, daha yavaş ağ hızlarını ve ağ bağlantısında meydana gelebilecek değişiklikleri algılayıp bunlara uyum sağlayabilir.

Bant genişliğine öncelik ver

  • Cihazın bağlı olduğu ağın uzun ömürlü veya güvenilir olduğunu varsaymamalısınız. Bu nedenle uygulamalar, kullanıcıya en yararlı bilgileri mümkün olan en kısa sürede gösterebilmek için ağ isteklerine öncelik vermelidir.
  • Kullanıcılara görünür ve alakalı bilgileri hemen sunmak, gerekli olmayabilecek bilgileri beklemeye zorlamaktansa daha iyi bir kullanıcı deneyimidir. Bu, kullanıcının beklemesi gereken süreyi kısaltır ve uygulamanın yavaş ağlarda kullanışlılığını artırır.
  • Bunu başarmak için ağ isteklerinizi, metin rich media'dan önce getirilecek şekilde sıralayın. Metin istekleri genellikle daha küçüktür, daha iyi sıkıştırılır ve dolayısıyla daha hızlı aktarılır. Bu, uygulamanızın faydalı içerikleri hızlı bir şekilde gösterebileceği anlamına gelir. Ağ isteklerini yönetme hakkında daha fazla bilgi için Ağ Kullanımını Yönetme ile ilgili Android eğitimini ziyaret edin.

Daha yavaş bağlantılarda daha az bant genişliği kullan

  • Uygulamanızın verileri zamanında aktarabilmesi ağ bağlantısına bağlıdır. Ağın kalitesini tespit etmek ve uygulamanızın ağı kullanma biçimini ayarlamak mükemmel bir kullanıcı deneyimi sunmaya yardımcı olabilir.
  • Temel ağ kalitesini tespit etmek için aşağıdaki yöntemleri kullanabilirsiniz. Uygulamanız, bu yöntemlerdeki verileri kullanarak ağ kullanımını, kullanıcı işlemlerine zamanında yanıt vermeye devam edecek şekilde uyarlamalıdır:
  • Daha yavaş bağlantılarda, yalnızca düşük çözünürlüklü medya indirmeyi veya hiç medya indirmemeyi düşünün. Bu, kullanıcılarınızın yavaş bağlantılarda uygulamayı kullanabilmesini sağlar. Resminiz yoksa veya resim hâlâ yükleniyorsa her zaman bir yer tutucu göstermelisiniz. Hedef resimle eşleşen yer tutucu renkleri oluşturmak için Palet kitaplığını kullanarak dinamik yer tutucu oluşturabilirsiniz.
  • Kullanıcılar, Android 7.0 (API düzeyi 24) ve sonraki sürümleri çalıştıran cihazlarda veri kullanımını en aza indiren Veri Tasarrufu ayarını etkinleştirebilir. Android 7.0, Veri Tasarrufu ayarlarını algılamak için ConnectivityManager süresini genişletir. Bu özellik hakkında daha fazla bilgi edinmek için Veri Tasarrufu bölümüne bakın.

Ağ değişikliklerini algılayıp uygulama davranışını değiştirin

  • Ağ kalitesi sabit değildir. Konuma, ağ trafiğine ve yerel nüfus yoğunluğuna göre değişir. Uygulamalar ağdaki değişiklikleri algılamalı ve bant genişliğini buna göre ayarlamalıdır. Bu sayede uygulamanız, kullanıcı deneyimini ağ kalitesine uyarlayabilir. Aşağıdaki yöntemleri kullanarak ağ durumunu tespit edin:
  • Ağ kalitesi düştükçe isteklerin sayısını ve boyutunu küçültün. Bağlantı kalitesi iyileştikçe isteklerinizin ölçeğini optimum düzeylere çıkarabilirsiniz.
  • Daha yüksek kaliteli ve sınırsız ağlarda, önceden kullanılabilir hale getirmek için verileri önceden getirme seçeneğini değerlendirin. Kullanıcı deneyimi açısından bakıldığında bu, haber okuyucu uygulamalarının 2G'de aynı anda üç makale, kablosuz bağlantı üzerinden ise aynı anda yirmi makale getirmesi anlamına gelebilir. Uygulama davranışını ağ değişikliklerine göre ayarlama hakkında daha fazla bilgi edinmek için Bağlantı Durumunu İzleme ile ilgili Android eğitimini ziyaret edin.
  • CONNECTIVITY_CHANGE yayını, ağ bağlantısında bir değişiklik olduğunda gönderilir. Uygulamanız ön plandayken bu yayını almak için registerReceiver çağrısı yapabilirsiniz. Yayını aldıktan sonra mevcut ağ durumunu yeniden değerlendirmeniz ve kullanıcı arayüzü ile ağ kullanımınızı buna göre ayarlamanız gerekir. Bu alıcı, Android 7.0 (API düzeyi 24) ve sonraki sürümlerde kullanılamadığından manifest dosyanızda bu alıcıyı beyan etmemelisiniz. Bu konuda ve Android 7.0'daki diğer değişiklikler hakkında daha fazla bilgi edinmek için Android 7.0 Değişiklikleri bölümüne bakın.

Ek kaynaklar

Çeşitli bağlantı hızlarını destekleme hakkında daha fazla bilgi edinmek için aşağıdaki kaynağı inceleyin:

Blog yayını