Tentang Networking di Android

Semenjak Android 6.0 dirilis, ada hal menarik yang membuat saya penasaran, yaitu tentang “Apache HTTP Client Removal”. Dikarenakan pada Android versi ini,  penggunaan Apache HTTP Client sudah tidak di support lagi dan disarankan untuk menggunakan class HttpURLConnection.

Note : Tutorial ini masih dalam pengerjaan, jadi masih akan terus diupdate sampai kontennya memenuhi semua kebutuhan informasi tentang networking di Android.

Tapi jika tetap ingin menggunakan API Apache HTTP Client, kita harus mendeklarasikan ini di build.gradle.

android {
    useLibrary 'org.apache.http.legacy'
}

Sebelum jauh jauh membahas tentang kenapa hal ini bisa terjadi, mari kita flashback terlebih dahulu tentang basic networking di Android.

Networking di Android artinya adalah kemampuan untuk mengirim dan menerima data dari server. Data ini dapat berupa teks biasa, XML, JSON, gambar, atau video streaming.  Android mendukung dua tipe HTTP Client untuk networking, satu menggunakan Apache HTTP Client dan satu lagi HttpURLConnection. Nah saatnya kita membahas kenapa dukungan terhadap Apache HttpClient di hilangkan.

 

Apache HttpClient vs HttpURLConnection

Kebanyakan aplikasi Android masih menggunakan Apache HttpClient untuk semua operasi networknya. Tapi ternyata dunia telah berubah sejak negara api menyerang, eh loh loh.., kok jadi cari Avatar sih 😀

Intinya Google sudah tidak lagi menggunakan Apache HTTP Client untuk mengoperasikan network pada sistem operasi Android 6.0, bahkan sebenarnya ini sudah disarankan sejak Versi Gingerbread (Android 2.3). Kata mereka:

HttpURLConnection is simple and thin API’s supporting transparent compression and response caching. Response cache is used to improve speed and loading time. Response caching reduce network use, improve speed and save battery.

Jadi bisa ditarik kesimpulan, bahwa penggunaan API Apache HTTPClient mengkonsumsi jaringan dan baterai terlalu besar. artikel terkait ..

Nah mari bicara tentang task yan

 

Asynchronous and Synchronous

Sebenernya pembahasan tentang Aysnc & Sync ini pernah dibahas di postingan terdahulu di sini. Tapi kali ini kita coba melakukan pembahasan pada platform yang berbeda, Android. Oke, berikut gambaran cara kerja Synchronous dan Asynchronous secara umum:

Cara kerja Synchronous dan Asynchronous
Cara kerja Synchronous dan Asynchronous

Mari kita bahas detail satu persatu, jadi ketika proses A berkomunikasi dengan proses B secara  synchronous, itu artinya proses A sedang mengirimkan pesan ke proses B dan menunggu hingga B membalasnya. Proses A tidak bisa melakukan apapun sampai mendapatkan respon dari proses B.

Nah, ketika kedua proses ini bekerja secara Asynchronous, tiap proses akan mengirimkan pesan ke proses lainnya tanpa harus menunggu proses tersebut membalasnya. Nah untuk contoh penggunaan Async & Synch dalam satu thread atau multi thread dapat dilihat disini.

Thread

Thread membantu kita untuk bekerja secara multitasking, dengan thread kita bisa menjalankan proses lainnya di bawah/dibelakang proses utama pada aplikasi dan ini bekerja secara paralel.

Baca juga:

MultiThreading

Handler dan AsyncTask merupakan cara untuk mengimplementasi-kan multithreading di Android menggunakan thread UI/Event. Handler sudah ada di API Android level 1, sedangkan AsyncTask sudah ada semejak API Level 3.

Handler

Handler merupakan class utama untuk komunikasi multi-thread.

Threading

  • Handler bisa menambahkan pesan ke thread yang

AsyncTask

Dengan Asynctask kita bisa mengimplementasikan multi threading tanpa harus campur tangan kedalamnya dan juga class ini berfungsi untuk menghubungkan background task ke thread UI nya Android. Sehingga dengan class ini kita bisa melakukan operasi dibelakang lalu mengirimkan hasilnya ke thread UI.

Jadi, kapan kita bisa menggunakan AsyncTask?

Yaitu ketika ada operasi yang memakan proses lama seperti download banyak file atau melakukan Http Request dari server, dan juga decoding images, dsb.

Reference:

Ada suatu saat dimana kita akan menggunakan kedua cara ini dalam proses di aplikasi.

 

Tips dan Trik

  • Jangan pernah mendownload data pada Main Thread. Hal ini akan membuat aplikasi not respoding (ANR).
  • Gunakan HttpURLConnection ketimbang Apache HttpClient untuk aplikasi yang ditargetkan pada Android versi 2.3 keatas.
  • Jika aplikasi kita menjalankan task yang cukup lama, seperti upload video, nah disarankan menggunakan IntentService.
  • Ini saran klasik sih, cuma ampuh banget buat aplikasi. Jadi, buat user merasa aplikasi kita tidak membosankan. Artinya, buat tampilan yang merepresentasikan bawah sedang dalam proses download data, contohnya: loading bar.

 

Iklan

Good People write good comments ..

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s