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

  1. Request Queue, digunakan untuk mengirimkan permintaan ke jaringan, dapat membuat antrian permintaan pada permintaan sesuai yang diinginkan,
  2. 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.

add-library

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;
	}

}

 

Incoming search terms: