Volley adalah library HTTP yang mempermudah dan, yang terpenting, mempercepat
networking untuk aplikasi Android. Volley tersedia di GitHub.
Volley unggul di operasi tipe RPC yang digunakan untuk mengisi UI, seperti
mengambil halaman hasil penelusuran sebagai data terstruktur. Volley terintegrasi
secara mudah dengan protokol apa pun dan memberi performa terbaik dengan
dukungan untuk string raw, gambar, dan JSON. Dengan memberikan dukungan
bawaan untuk fitur yang Anda butuhkan, dengan Volley, Anda tidak perlu menulis
kode boilerplate, sehingga Anda dapat berkonsentrasi pada logika yang spesifik
untuk aplikasi Anda.
Volley tidak cocok untuk operasi download atau streaming yang besar karena Volley
menyimpan semua respons dalam memori selama penguraian. Untuk operasi
download besar, pertimbangkan untuk menggunakan alternatif
seperti DownloadManager.
dependencies {
...
implementation 'com.android.volley:volley:1.1.1'
}
Anda juga bisa meng-clone repositori Volley dan menjadikannya sebagai project
library:
1. Git meng-clone repositori dengan mengetik kode berikut ini di command line:
Pada level tinggi, Anda menggunakan Volley dengan membuat RequestQueue dan
meneruskannya objek Request. RequestQueue mengelola thread pekerja untuk
menjalankan operasi jaringan, membaca dari dan menulis ke cache, serta mengurai
respons. Permintaan akan melakukan penguraian respons mentah dan Volley akan
menangani pengiriman respons yang diurai kembali ke thread utama untuk
dikirimkan.
Menggunakan newRequestQueue
Volley menyediakan metode praktis Volley.newRequestQueue yang akan
menyiapkan RequestQueue untuk Anda, menggunakan nilai default, dan memulai
antrean. Contoh:
KotlinJava
final TextView textView = (TextView) findViewById(R.id.text);
// ...
Volley selalu memberikan respons yang diurai pada thread utama. Berjalan di thread
utama adalah hal yang praktis untuk mengisi kontrol UI dengan data yang diterima,
sebab Anda bisa bebas memodifikasi kontrol UI langsung dari pengendali respons.
Namun hal tersebut sangat penting bagi banyak semantik penting yang disediakan
oleh library, terutama yang berkaitan dengan pembatalan permintaan.
Mengirim permintaan
Untuk mengirimkan permintaan, cukup buat satu dan tambahkan
ke RequestQueue dengan add(), seperti yang ditunjukkan di atas. Setelah ditambahkan,
permintaan akan bergerak melalui pipeline, dilayani, dan respons mentahnya
diuraikan dan dikirim.
Saat Anda memanggil add(), Volley akan menjalankan satu thread pemrosesan
cache dan kumpulan thread pengiriman jaringan. Saat Anda menambahkan
permintaan ke antrean, permintaan akan diambil oleh thread cache dan
diprioritaskan: jika permintaan dapat dilayani dari cache, respons yang di-cache akan
diuraikan pada thread cache dan respons yang diuraikan akan dikirimkan di thread
utama. Jika permintaan tidak dapat dilayani dari cache, permintaan akan
ditempatkan di antrean jaringan. Thread jaringan pertama yang tersedia akan
mengambil permintaan dari antrean, melakukan transaksi HTTP, menguraikan
respons pada thread pekerja, menulis respons ke cache, dan memposting respons
yang diurai kembali ke thread utama untuk dikirimkan.
Membatalkan permintaan
Untuk membatalkan permintaan, panggil cancel() pada objek Request Anda. Setelah
dibatalkan, Volley menjamin agar pengendali respons Anda tidak akan pernah
dipanggil. Dalam praktiknya ini berarti Anda bisa membatalkan semua permintaan
yang tertunda dalam metode onStop() aktivitas dan Anda tidak perlu membuang
pengendali respons dengan centang untuk getActivity() == null,
baik onSaveInstanceState() sudah dipanggil, atau boilerplate defensif lainnya.
Untuk memanfaatkan perilaku ini, Anda biasanya harus melacak semua permintaan
yang sedang berlangsung agar dapat membatalkannya di waktu yang tepat. Ada
cara yang lebih mudah: Anda dapat mengaitkan objek tag dengan setiap permintaan.
Nantinya Anda bisa menggunakan tag ini untuk memberikan cakupan permintaan
untuk dibatalkan. Misalnya, Anda dapat memberi tag semua permintaan
dengan Activity yang dibuat atas namanya, dan
memanggil requestQueue.cancelAll(this) dari onStop(). Selain itu, Anda bisa memberi tag
semua permintaan gambar thumbnail di tab ViewPager dengan masing-masing tab
dan membatalkan dengan geser untuk memastikan bahwa tab baru tidak ditunda
oleh permintaan dari yang lain.
KotlinJava
RequestQueue requestQueue;
// ...
Jika hanya perlu membuat permintaan satu kali dan tidak ingin meninggalkan
kumpulan thread, Anda dapat membuat RequestQueue di mana pun Anda
membutuhkannya lalu memanggil stop() pada RequestQueue setelah respons atau
error kembali, menggunakan metode Volley.newRequestQueue() yang dijelaskan
dalam Mengirim Permintaan Sederhana. Namun, kasus penggunaan yang lebih
umum adalah membuat RequestQueue sebagai singleton agar tetap berjalan
sepanjang waktu penggunaan aplikasi Anda, seperti yang dijelaskan di bagian
berikutnya.
KotlinJava
public class MySingleton {
private static MySingleton instance;
private RequestQueue requestQueue;
private ImageLoader imageLoader;
private static Context ctx;
@Override
public Bitmap getBitmap(String url) {
return cache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
cache.put(url, bitmap);
}
});
}
KotlinJava
// Get a RequestQueue
RequestQueue queue = MySingleton.getInstance(this.getApplicationContext()).
getRequestQueue();
// ...