Register now for Android Dev Summit 2019!

Menentukan dan memantau status konektivitas

Beberapa penggunaan alarm berulang dan layanan latar belakang yang paling umum adalah untuk menjadwalkan update rutin data aplikasi dari resource Internet, data cache, atau menjalankan download yang berlangsung lama. Namun, jika Anda tidak terhubung ke Internet, atau koneksi terlalu lambat untuk menyelesaikan download, mengapa harus repot-repot membuka kunci perangkat untuk menjadwalkan update?

ConnectivityManager bisa digunakan untuk memeriksa apakah Anda benar-benar terhubung ke Internet, dan jika ya, apa tipe koneksi yang sedang digunakan.

Menentukan apakah Anda memiliki sambungan internet

Tidak perlu menjadwalkan update berdasarkan resource Internet jika Anda tidak terhubung ke Internet. Cuplikan berikut ini menunjukkan cara penggunaan ConnectivityManager untuk membuat kueri jaringan yang aktif dan menentukan apakah jaringan memiliki konektivitas Internet.

Kotlin

    val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
    val activeNetwork: NetworkInfo? = cm.activeNetworkInfo
    val isConnected: Boolean = activeNetwork?.isConnectedOrConnecting == true
    

Java

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

    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    boolean isConnected = activeNetwork != null &&
                          activeNetwork.isConnectedOrConnecting();
    

Menentukan tipe sambungan internet Anda

Anda juga bisa menentukan tipe sambungan Internet yang saat ini tersedia.

Konektivitas perangkat bisa disediakan oleh data seluler, WiMAX, Wi-Fi, dan sambungan ethernet. Dengan membuat kueri bagi tipe jaringan yang aktif, seperti yang ditunjukkan di bawah ini, Anda bisa mengubah rasio pembaruan berdasarkan bandwidth yang tersedia.

Kotlin

    val isWiFi: Boolean = activeNetwork?.type == ConnectivityManager.TYPE_WIFI
    

Java

    boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;
    

Harga kuota cenderung lebih mahal daripada Wi-Fi sehingga biaya untuk mengupdate aplikasi Anda biasanya akan lebih murah daripada koneksi seluler. Demikian pula, download yang berukuran besar akan ditangguhkan hingga Anda mendapatkan koneksi Wi-Fi.

Setelah menonaktifkan update, Anda harus memantau perubahan dalam konektivitas agar bisa melanjutkannya setelah terhubung dengan sambungan Internet.

Memantau perubahan dalam konektivitas

Aplikasi yang menargetkan Android 7.0 (API level 24) dan yang lebih tinggi tidak menerima siaran CONNECTIVITY_ACTION jika mendeklarasikan penerima siaran dalam manifesnya. Aplikasi masih akan menerima siaran CONNECTIVITY_ACTION jika mendaftarkan BroadcastReceiver miliknya dengan Context.registerReceiver() dan konteks tersebut masih valid.