Mobil Programlama

Android

İndirmelerin Bağlantı Tipine Göre Düzenlenmesi

Lisans: Creative Commons 26.11.2020 tarihinde güncellendi
Bakabileceğiniz Etiketler: Eğitmen: Geleceği Yazanlar Ekibi

Pil ömrüne etkileri açısından bakıldığında bütün bağlantı tipleri eşit değildir. Örneğin, Wi-Fi kablosuz yayını, muadili mobil şebeke yayınlarınaa göre daha az pil harcar. Çeşitli mobil ve kablosuz yayın teknolojilerinin pil üzerinde farklı etkileri vardır.

 

Wi-Fi kullanımı

Wi-Fi ağ bağlantıları, hissedilir derecede az pil harcayarak çok fazla bant genişliği sunar. Dolayısıyla, veri aktarımı yapmak istediğinizde bunu mümkün olduğunda Wi-Fi üzerinden bağlanarak yapmak için çaba göstermenizi tavsiye ederiz.

Büyük indirmeler yapmak, zamanlanmış güncellemeleri almak için Wi-Fi bağlantısı tespit etmek, bağlantı değişikliklerini dinleyen bir broadcast receiver kullanılarak yapılabilir.

 

Yüksek bant genişliğini kullanmak

Kullandığınız kablosuz ağ yayını bant genişliğinin artması, daha fazla pil kullanımını beraberinde getirir. Bu da LTE'nin tipik olarak 3G'den, onun da 2G'den daha fazla enerji harcadığını gösterir.

Arka tarafta kullanılan ağ yayını, durum makinesi (state machine) yayın teknolojisine dayandığından, buna bağlı olan ağ yayını durumu değişim süresinin (tail time) pile etkisi, genelde yüksek bant genişlikli yayınlarda daha fazladır.

Aynı zamanda yüksek bant genişliğ kullanmanız size daha agresif önbellekleme ve birim zamanda daha çok veri indirme olanağı sağlar. Ağ yayını durumu değişirken, pil harcaması nispeten daha fazla olduğundan, radyoyu her aktarma seansında uzun süreli aktif tutmak güncelleme sıklığını azaltmak açısından daha verimli olacaktır.

Örnek olarak, bir LTE yayınının hem enerji harcaması hem de bant aralığı, 3G'nin iki katıdır. Öte yandan bu durum, her oturumda 3G'dekinin 4 katı kadar veri indirebileceğiniz anlamına da gelir. Belli bir miktarın üzerinde veri indirmesi yaptığınızda, önbelleğe aktarımınızın yerel hafızanızdaki boş alana etkisini dikkate almayı ve belirli aralıklarla önbelleğinizi temizlemeniz gerektiğini de unutmayın.

Aktif kablosuz ağ yayınlarını tespit edip önbelleğe alma alışkanlıklarınızı düzenlemek için ConnectivityManager'ı kullanabilirsiniz.

ConnectivityManager cm =
 (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);

TelephonyManager tm =
  (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
  
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
 
int PrefetchCacheSize = DEFAULT_PREFETCH_CACHE;
 
switch (activeNetwork.getType()) {
  case (ConnectivityManager.TYPE_WIFI): 
    PrefetchCacheSize = MAX_PREFETCH_CACHE; break;
  case (ConnectivityManager.TYPE_MOBILE): {
    switch (tm.getNetworkType()) {
      case (TelephonyManager.NETWORK_TYPE_LTE | 
            TelephonyManager.NETWORK_TYPE_HSPAP): 
        PrefetchCacheSize *= 4;
        break;
      case (TelephonyManager.NETWORK_TYPE_EDGE | 
            TelephonyManager.NETWORK_TYPE_GPRS): 
        PrefetchCacheSize /= 2;
        break;
      default: break;
    }
    break;
  }
  default: break;
}

 

Bu sayfadaki metinler Android Open Source Project kapsamında oluşturulmuş ve paylaşılmış içeriğin küçük değişiklikler yapılmış hâlidir ve Creative Commons 2.5 Attribution License'ta belirlenen koşullara göre kullanılmıştır.

Bu eğitim içeriğinin orijinal hâline buradan ulaşabilirsiniz: Modifying Patterns Based on the Connectivity Type