Pada Google I/O 2013 yang lalu Ficus Kirkpatrick memperkenalkan library yang memudahkan aplikasi android untuk mengakses jaringan dengan mudah dan cepat. seperti melakukan request data pada jaringan secara paralel untuk menampilkan gambar pada sebuah listview. library tersebut adalah Android Volley Library.
Apakah Android Volley itu ?
Secara singkat Volley adalah library jaringan yang mengelola permintaan jaringan dan respon cache tanpa harus menulis banyak code. Volley memungkinkan untuk request yang simultan dalam pool of threads yang dapat diberikan prioritas diatas satu sama lain. Di karenakan hasil respon dikirim ke seluruh memori, maka Volley kurang ideal untuk data yang besar hal ini diarahkan untuk permintaan data yang kecil seperti file JSON, gambar, dan file lainnya yang ukurannya tidak terlalu besar seperti lagu atau film.
Keuntungan menggunakan Volley :
- Volley secara otomatis menjadwal permintaan jaringan.
- Volley menyediakan transparan disk and memory cache.
- Volley menyediakan pembatalan request API.
- Volley memberikan kebebasan untuk di custom.
- Volley menyediakan debuging dan tracing tools.
Bagaimana menggunakan Volley ?
Clone library Android Volley
git clone https://android.googlesource.com/platform/frameworks/volley
Dua bagian utama dari Volley
- Request Queue, digunakan untuk mengirimkan permintaan ke jaringan, dapat membuat antrian permintaan pada permintaan sesuai yang diinginkan,
- Request, berisi rincian yang diperlukan untuk membuat panggilan web API. Seperti metode yang digunakan (POST atau GET) melewatkan data, penerima respon dan error.
Contoh dasar penggunaan Volley.
Asumsi telah mendownload Volley library dan mengimport project Volley Library pada Editor seperti eclipse.
Langkah 1. Pastikan project Volley Library sudah ter import.
Langkah 2. Buat Project Aplikasi Android yang baru, Beri nama ContohVolley.
Langkah 3. Klik kanan pada project ContohVolley, pilih propertise. Kemudian pilih Android. Pada dialog Library tambahkan library Android Volley yang sudah di import sebelumnya.
Langkah 4. Tambahkan permision INTERNET pada file AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"/>
Langkah 5. Pada Activity function onCreate()
– buat sebuah object dari class RequestQueue
RequestQueue queue = Volley.newRequestQueue(this);
– buat object dari class JSONObjectRequest
String url = "http://api.openweathermap.org/data/2.5/weather?q=yogyakarta,id"; JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { // TODO Auto-generated method stub txtDisplay.setText("Response => "+response.toString()); findViewById(R.id.progressBar1).setVisibility(View.GONE); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // TODO Auto-generated method stub } });
– Tambahkan request ke dalam RequestQueue
queue.add(jsObjRequest);
– kode lengkap dari file MainActivity.java
package id.web.sinaryuda.tutorial.contohvolley; import org.json.JSONObject; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.TextView; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.JsonObjectRequest; import com.android.volley.toolbox.Volley; public class MainActivity extends Activity { private TextView txtDisplay; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); txtDisplay = (TextView) findViewById(R.id.txtDisplay); RequestQueue queue = Volley.newRequestQueue(this); String url = "http://api.openweathermap.org/data/2.5/weather?q=yogyakarta,id"; JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { // TODO Auto-generated method stub txtDisplay.setText("Response => "+response.toString()); findViewById(R.id.progressBar1).setVisibility(View.GONE); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // TODO Auto-generated method stub } }); queue.add(jsObjRequest); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }