Ağ erişimini optimize edin

Veri aktarmak için kablosuz radyo kullanmak, önemli pil tüketimine yol açabilir. Ağ etkinliğiyle ilişkili pil tüketimini en aza indirmek için bağlantı modelinizin temel radyo donanımını nasıl etkileyeceğini anlamanız çok önemlidir.

Bu bölümde kablosuz radyo durum makinesi tanıtılır ve uygulamanızın bağlantı modelinin bu makineyle nasıl etkileşime geçtiği açıklanır. Ardından, uygulamanızın veri tüketiminin pil üzerindeki etkisini en aza indirmeye yardımcı olacak çeşitli teknikler sunar.

Radyo durum makinesi

Kullanıcınızın cihazındaki kablosuz radyo, yerleşik güç tasarrufu özelliklerine sahiptir. kullandığı pil gücü miktarını en aza indirmenize yardımcı olabilir. Tam olarak etkinken kablosuz radyo önemli miktarda güç tüketir ancak etkin değilken veya bekleme modundayken çok az güç tüketir.

Unutulmaması gereken önemli bir nokta, radyonun bekleme modundan hemen olması gerekir. Aramayla ilişkili bir gecikme süresi "destekleniyor" son derece önemlidir. Bu nedenle pil, kullanılmadığında güç tasarrufu yapmak için daha yüksek enerji durumlarından daha düşük enerji durumlarına yavaşça geçerken radyoyu "açma" ile ilişkili gecikmeyi en aza indirmeye çalışır.

Tipik bir 3G ağ radyosunun durum makinesi üç enerji durumundan oluşur:

  • Tam güç: Bir bağlantı etkin olduğunda kullanılır ve cihazın şu işlemleri yapmasına izin verir: mümkün olan en yüksek hızda aktarmanızı sağlar.
  • Düşük güç: Pil gücü tüketimini şu kadar azaltan bir ara durum: %50 civarındadır.
  • Bekleme: Hiçbir ağ bağlantısının etkin olmadığı, minimum güç tüketimi yapılan durumdur.

Düşük ve bekleme modları pil gücünü önemli ölçüde tüketse de Ağ isteklerinde önemli düzeyde gecikme yaşanır. Tamamen şarj cihazına dönülüyor: Düşük durum yaklaşık 1, 5 saniye sürer ve bekleme modundan tam güç moduna geçilir 2 saniyeden uzun sürebilir.

Durum makinesi, gecikmeyi en aza indirmek için daha düşük enerji durumlarına geçişi ertelemek üzere bir gecikme kullanır. Şekil 1'de, AT&T'nin tipik bir 3G radyo için kullandığı zamanlamalar kullanılmaktadır.


Şekil 1. Tipik 3G kablosuz radyo durumu makinesi.

Her cihazdaki radyo durumu makinesi, özellikle de ilişkili geçiş gecikme ("kuyruk süresi") ve başlatma gecikmesi, kablosuz radyoya göre değişir kullanılan teknoloji (3G, LTE, 5G vb.) ve tüm teknolojinin cihazın çalıştığı operatör ağı.

Bu sayfada tipik bir 3G kablosuz ağ için temsili durum makinesi açıklanmaktadır (at&T tarafından sağlanan verilere göre). Ancak genel ilkeler ve önerilen en iyi uygulamalar tüm kablosuz radyo uygulamaları için geçerlidir.

Bu yaklaşım, kullanıcılar web'de gezinirken istenmeyen gecikmeleri önlediğinden özellikle tipik mobil web taramalarında etkilidir. Nispeten düşük sonlandırma süresi, bir tarama oturumu sona erdiğinde radyonun daha düşük bir enerji durumuna geçebilmesini de sağlar.

Maalesef bu yaklaşım, Android gibi modern akıllı telefon işletim sistemlerinde uygulamaların hem ön planda (gecikmenin önemli olduğu) hem de arka planda (pil ömrüne öncelik verilmesi gereken) çalıştığı, verimsiz uygulamalara yol açabilir.

Uygulamalar, radyo durumu makinesine nasıl etki eder?

Yeni bir ağ bağlantısı oluşturduğunuzda radyo tam güç durumuna geçer. Daha önce açıklanan tipik 3G radyo durum makinesi söz konusu olduğunda, aktarım süreniz boyunca ve ek 5 saniyelik son süre boyunca tam güçte kalır ve ardından 12 saniye boyunca düşük enerji durumunda kalır. Bu nedenle, tipik bir 3G cihazda her veri aktarma oturumu, radyonun en az 18 saniye boyunca enerji çekmesine neden olur.

Pratikte bu, dakikada üç kez bir saniyelik veri aktarımı yapan bir uygulamanın kablosuz radyoyu sürekli olarak etkin tutacağı ve tam da bekleme moduna girerken yüksek güce geri döndüreceği anlamına gelir.


Şekil 2. Bir saniyelik aktarım aktarımı için göreli kablosuz radyo gücü kullanımı / dakikada üç kez. Şekilde "güçlendirme" hariç gecikme olabilir.

Buna karşılık, aynı uygulama veri aktarımlarını paket hâline getirdiyse, 3 saniyede aktarım sağlar. Bu, radyonun yüksek güçte kalmasını sağlar. 20 saniye uzunluğunda olacak şekilde yeniden ayarlayabilirsiniz. Bu, radyonun her dakika 40 saniye boyunca bekleme modunda kalıyor ve bu da önemli Pil tüketiminde azalma.


Şekil 3. Üç saniyelik aktarımlar için göreli kablosuz radyo gücü kullanımı yalnızca 10 dakikada bir yapılıyor.

Optimizasyon teknikleri

Ağ erişiminin pil ömrünü nasıl etkilediğini artık anladığınıza göre yapabileceklerinize dair birkaç örnek vereyim: hızlı ve akıcı bir kullanıcı deneyimi sağlamak.

Paket halinde veri aktarımı

Önceki bölümde belirtildiği gibi, daha az sıklıkta daha fazla veri aktarmak için veri aktarımlarınızı gruplandırmak, pil verimliliğini artırmanın en iyi yollarından biridir.

Elbette, uygulamanızın bir kullanıcı işlemine yanıt olarak hemen veri alması veya göndermesi gerekiyorsa bunu her zaman yapamazsınız. Bu sorunu, verileri önceden tahmin edip ön besleyerek azaltabilirsiniz. Diğer senaryolar bir sunucuya günlüklerin veya analizlerin ve diğer, acil olmayan, uygulama tarafından başlatılan verilerin gönderilmesi grup oluşturma ve paketleme işlerinde çok işe yarar. Bkz. Optimizasyon uygulama tarafından başlatılan görev arka planda ağ aktarımlarını planlamayla ilgili ipuçları.

Verileri ön getirme

Verileri önceden getirmek, bağımsız değişkenlerin sayısını uygulamanızın çalıştırdığı veri aktarımı oturumlarıdır. Ön getirme özelliği sayesinde, kullanıcı uygulamanızda bir işlem gerçekleştirdiğinde uygulama, bir sonraki kullanıcı işlemi serisi için büyük olasılıkla hangi verilere ihtiyaç duyulacağını tahmin eder ve bu verileri tek bir bağlantı üzerinden tek seferde, tam kapasitede getirir.

Aktarımlarınızı önceden yükleyerek verileri indirmek için gereken radyo etkinleştirmelerinin sayısını azaltırsınız. Bu sayede yalnızca pil ömrünü korumakla kalmaz, gecikmeyi iyileştirir, gerekli bant genişliğini düşürür ve indirme sürelerini kısaltırsınız.

Ön getirme, bir işlem gerçekleştirmeden veya verileri görüntülemeden önce indirmelerin tamamlanmasını beklemekten kaynaklanan uygulama içi gecikmeyi en aza indirerek de daha iyi bir kullanıcı deneyimi sağlar.

Pratik bir örnek verelim.

Haber okuyucu

Birçok haber uygulaması, yalnızca bir kategori seçildikten sonra başlıkları, yalnızca kullanıcı okumak istediğinde makalelerin tamamını ve ekranı kaydırırken küçük resimleri indirerek bant genişliğini azaltmaya çalışır.

Bu yaklaşım kullanıldığında radyo, çoğu kullanıcı için etkin kalmaya zorlanır. oranında kullanıcı haber okuma oturumuna giriş yaparken, başlıkları ve kategorileri makale okuyabilirsiniz. Bununla birlikte, enerji durumları arasında sürekli geçiş yapmak, kategori değiştirirken veya makale okurken önemli gecikmelere neden olur.

Başlangıçta makul miktarda veriyi önceden getirmek daha iyi bir yaklaşımdır. İlk haber başlığı ve küçük resim grubuyla başlayıp başlatma süresini dikkate alarak ve kalan başlıklarla devam ederek ve her bir makalenin en az yayınlanan makale metinlerini birincil başlık listesi.

Başka bir alternatif de her başlığı, küçük resmi, makale metnini ve hatta makale resimlerinin tamamını önceden almaktır. Bu işlem genellikle önceden belirlenmiş bir program doğrultusunda arka planda yapılır. Bu yaklaşım, fazla miktarda bant genişliği ve hiçbir zaman kullanılmayan içeriklerin indirilmesi için pil ömrüne sahip olduğundan, dikkatli olun.

Göz önünde bulundurulması gereken diğer noktalar

Verileri önceden getirmek birçok avantaj sağlasa da aşırı agresif bir şekilde kullanılır önceden getirme işlemi ayrıca pilin hızlı tükenmesi ve bant genişliğinin indirme kotasının yanı sıra indirme işlemlerinde de kullanılabilir. Aynı zamanda uygulanırken, önceden getirmenin uygulamanın başlatılmasını geciktirmemesini uygulama önceden getirme işleminin tamamlanmasını bekler. Pratikte Verilerin kademeli olarak işlenmesi veya öncelikli olarak art arda aktarım başlatılması uygulamanın başlatılması için gereken verilerin indirilip işlenmesini tıklayın.

Verileri önceden getirme işleminin ne kadar agresif olduğu, söz konusu verilerin boyutuna bağlıdır ve kullanılma olasılığını gösterir. Daha önce açıklanan durum makinesine dayalı olarak, kabaca bir kılavuz olarak, mevcut kullanıcı oturumunda kullanılma olasılığı %50 olan veriler için, kullanılmayan verileri indirmenin potansiyel maliyeti bu verileri indirmemekten elde edilecek potansiyel tasarrufla eşleşmeden önce genellikle yaklaşık 6 saniye (yaklaşık 1-2 megabayt) ön getirme yapabilirsiniz.

Genel anlamda, verileri yalnızca Google'a ait olmayan her 2 ila 5 dakikada bir yeni bir indirme işlemi başlatması gerekir ve 5 megabayt.

Bu ilkeye göre video dosyaları gibi büyük indirmeler, düzenli aralıklarla (2 ila 5 dakikada bir) parçalar halinde indirilir. yalnızca sonraki birkaç dakika içinde görüntülenecek video verileri önceden getiriliyor.

Bunun bir çözümü, tam indirme işlemini yalnızca Kablosuz bağlantı ve muhtemelen yalnızca cihaz şarj olurken. İlgili içeriği oluşturmak için kullanılan WorkManager API'si tam olarak bu kullanım alanını desteklediğinden arka planda çalışmayı kısıtlamanıza cihaz, geliştiricinin belirlediği ölçütleri (örneğin, şarj etme ve kablosuz ağa bağlı olmanız gerekir.

İstekte bulunmadan önce bağlantıyı kontrol edin

Cep telefonu sinyali aramak bir telefonda en çok güç tüketen işlemlerden biridir mobil cihaz Kullanıcı tarafından başlatılan istekler için en iyi uygulama, Bağlantı durumunu ve bağlantı ölçümünü izleme bölümünde gösterildiği gibi, önce ConnectivityManager kullanarak bağlantı olup olmadığını kontrol etmektir. Ağ yoksa uygulama, mobil radyoyu zorlamadan pil tasarrufu yapabilir dokunun. Böylece istek planlanabilir ve diğer istekleri olur.

Havuz bağlantıları

Gruplandırma ve ön getirmenin yanı sıra yardımcı olabilecek ek bir strateji de uygulamanızın ağ bağlantılarını bir araya getirmektir.

Mevcut ağ bağlantılarını yeniden kullanmak genellikle yeni bağlantılar başlatmaktan daha verimlidir. Bağlantıların yeniden kullanılması, ağın tıkanıklıklara ve ilgili ağ verisi sorunlarına daha akıllıca tepki verebilir.

HttpURLConnection ve OkHttp gibi çoğu HTTP istemcisi, bağlantı havuzunu varsayılan olarak etkinleştirir ve aynı bağlantıyı birden fazla istek için yeniden kullanır.

Özet ve gelecek planları

Bu bölümde kablosuz radyo ve pil tüketimini azaltırken hızlı, duyarlı bir kullanıcı deneyimi sunmak için yaygın olarak uygulayabileceğiniz bazı stratejiler hakkında çok şey öğrendiniz.

Bir sonraki bölümde, çoğu uygulamada ortak olan üç farklı ağ etkileşimi türünü ayrıntılı olarak inceleyeceğiz. Her biri için etmenleri öğreneceksiniz yönetmek için modern tekniklerin ve API'lerin yanı sıra, bu türleri yolları aranır.