Menentukan dan Memantau Status Konektivitas

Beberapa penggunaan paling umum untuk alarm berulang dan layanan latar belakang adalah menjadwalkan pembaruan rutin data aplikasi dari sumber daya Internet, data cache, atau mengeksekusi unduhan yang berlangsung lama. Namun jika Anda tidak terhubung ke Internet, atau koneksi terlalu lambat untuk menyelesaikan unduhan, bukankah lebih baik membangunkan perangkat untuk menjadwalkan pembaruan?

Anda bisa menggunakan ConnectivityManager untuk memeriksa apakah Anda benar-benar terhubung ke Internet, dan jika demikian, dan apakah tipe koneksi yang ada.

Menentukan apakah Anda memiliki Koneksi Internet

Anda tidak perlu menjadwalkan pembaruan berdasarkan sumber daya Internet jika tidak terhubung ke Internet. Cuplikan berikut menampilkan cara menggunakan ConnectivityManager untuk melakukan kueri jaringan yang aktif dan menentukan apakah jaringan memiliki konektivitas Internet

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

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

Menentukan Tipe Koneksi Internet Anda

Bisa juga menentukan tipe koneksi Internet yang saat ini tersedia.

Konektivitas perangkat, bisa disediakan oleh data seluler, WiMAX, Wi-Fi, dan koneksi ethernet. Dengan melakukan kueri tipe jaringan aktif, seperti yang ditampilkan di bawah ini, Anda bisa mengubah laju penyegaran berdasarkan bandwidth yang tersedia.

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

Biaya data seluler cenderung lebih mahal daripada Wi-Fi, jadi biasanya kecepatan pembaruan aplikasi Anda akan lebih lambat daripada koneksi seluler. Demikian pula, pengunduhan berukuran besar akan ditangguhkan hingga Anda mendapatkan koneksi Wi-Fi.

Setelah menonaktifkan pembaruan, Anda harus memantau perubahan dalam konektivitas agar dapat melanjutkannya setelah terhubung dengan koneksi Internet.

Memantau Perubahan dalam Konektivitas

ConnectivityManager menyiarkan aksi CONNECTIVITY_ACTION ("android.net.conn.CONNECTIVITY_CHANGE") bila detail konektivitas berubah. Anda bisa mendaftarkan penerima siaran dalam manifes untuk memantau perubahan ini dan melanjutkan (atau menangguhkan) pembaruan latar belakang Anda sebagaimana mestinya.

<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>

Perubahan pada konektivitas perangkat bisa sangat sering terjadi—siaran ini terpicu setiap kali Anda beralih antara data seluler dan Wi-Fi. Karena itu sebaiknya pantau siaran ini hanya jika sebelumnya Anda telah menangguhkan pembaruan atau unduhan agar dapat melanjutkannya. Umumnya cukup dengan memeriksa konektivitas Internet sebelum memulai pembaruan dan, jika tidak ada, menangguhkan pembaruan lebih lanjut sampai konektivitas pulih.

Teknik ini memerlukan peralihan penerima siaran yang telah Anda deklarasikan dalam manifes, yang akan dijelaskan dalam pelajaran berikutnya.