Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Mengubah pola download Anda berdasarkan jenis konektivitas

Ketika membahas dampak pada masa pakai baterai, tidak semua jenis koneksi diciptakan sama. Radio Wi-Fi tidak hanya menggunakan daya yang jauh lebih rendah daripada radio nirkabel lainnya, tetapi radio yang digunakan dalam berbagai teknologi radio nirkabel memiliki implikasi penggunaan daya yang berbeda.

Menggunakan Wi-Fi

Dalam sebagian besar kondisi, radio Wi-Fi akan menawarkan bandwidth lebih besar dengan penggunaan daya baterai yang jauh lebih rendah. Akibatnya, Anda harus mencoba menjalankan transfer data saat tersambung melalui Wi-Fi jika memungkinkan.

Anda dapat menggunakan penerima siaran untuk mendeteksi perubahan konektivitas yang menunjukkan saat koneksi Wi-Fi telah dibuat untuk menjalankan download yang signifikan, melakukan update terjadwal sebelumnya, dan berpotensi menambah frekuensi update reguler seperti yang dijelaskan dalam Menentukan status konektivitas dan jenis koneksi.

Mengurangi frekuensi download data lebih banyak dengan menggunakan bandwidth lebih besar

Ketika terhubung melalui radio nirkabel, bandwidth yang lebih tinggi umumnya menyebabkan penggunaan daya baterai yang tinggi. Hal ini berarti LTE biasanya menggunakan lebih banyak energi daripada 3G, yang tentunya lebih boros dari 2G.

Dengan demikian, meskipun mesin status radio yang mendasarinya bervariasi berdasarkan teknologi radio, secara umum dampak baterai relatif pada waktu akhir perubahan status memang lebih besar untuk radio dengan bandwidth yang lebih tinggi.

Pada saat yang sama, bandwidth yang lebih besar menunjukkan bahwa Anda dapat mengambil data lebih agresif, mendownload lebih banyak data dalam waktu yang sama. Mungkin hal tersebut kurang intuitif, karena penggunaan daya baterai pada waktu akhir akan relatif lebih tinggi, tetapi juga lebih efisien untuk membuat radio tetap aktif selama jangka waktu yang lebih lama bagi setiap sesi transfer guna mengurangi frekuensi update.

Misalnya, jika radio LTE memiliki dua kali lipat bandwidth dan menggunakan daya dua kali lipat dari 3G, Anda seharusnya mendownload data 4 kali lebih banyak dalam setiap sesi—atau berpotensi sebanyak 10 MB. Saat mendownload data sebanyak ini, sebaiknya pertimbangkan pengaruh dari mengambil data di penyimpanan lokal yang tersedia dan hapus cache pengambilan data Anda secara teratur.

Anda dapat menggunakan pengelola konektivitas untuk menentukan radio nirkabel yang aktif, dan mengubah rutinitas pengambilan data:

Kotlin

    val cm = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager

    val tm = getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager

    val activeNetwork: NetworkInfo? = cm.activeNetworkInfo

    val prefetchCacheSize: Int = when (activeNetwork?.type) {
        ConnectivityManager.TYPE_WIFI -> MAX_PREFETCH_CACHE
        ConnectivityManager.TYPE_MOBILE -> {
            when (tm.networkType) {
                TelephonyManager.NETWORK_TYPE_LTE or TelephonyManager.NETWORK_TYPE_HSPAP ->
                    DEFAULT_PREFETCH_CACHE * 4
                TelephonyManager.NETWORK_TYPE_EDGE or TelephonyManager.NETWORK_TYPE_GPRS ->
                    DEFAULT_PREFETCH_CACHE / 2
                else -> DEFAULT_PREFETCH_CACHE
            }
        }
        else -> DEFAULT_PREFETCH_CACHE
    }
    

Java

    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;
    }