Android ProgramlamaVolley Kullanımı

Merhabalar Arkadaşlar,

Bugünkü yazımda sizlere Android programlamada kullanılan Volley kütüphanesinden bahsedip ondan sonrada bir örnek yapacağız. Hazırsanız haydi başlayalım 🙂

Volley Nedir ?

Volley, bir HTTP kütüphanesidir. Android uygulamalar için daha hızlı ve daha kolay ağ işlemleri yapılmasını sağlamaktadır. Bir sunucudan veri almak veya sunucuya veri yüklemek gibi işlemleri rahatlıkla yapmayı sağlar. Volley kütüphanesinin en önemli özelliği ise bu işlemleri yaparken sizi karmaşık yapılardan kurtarmasıdır. Uygulama geliştirmek için oldukça kullanışlı ve faydalı bir kütüphanedir.

Volley Kütüphanesinin Kullanıcıya Faydaları

  • Ağ isteklerini otomatik olarak zamanlar.
  • Aynı anda birden çok ağa bağlantı yapılır.
  • İsteklerinizi öncelik sırasına koyar.
  • Özelleştirme imkanı sağlar.
  • JSON verilerine erişim, resim indirme veya yükleme, sunucu veritabanına veri kaydı yapma gibi birçok işlemi kolay bir şekilde yapmayı sağlar.
  • Ağ üzerinde verilerinizi asenkron bir şekilde alır.

Volley Kütüphanesini Uygulamaya Eklemek

Volley kütüphanesini Android uygulamalarımızda kullanabilmek için Gradle dosyamıza gidiyoruz.

build.gradle(Module: app) yazan yere tıklayıp aşağıdaki kod satırını ekliyoruz.

dependencies {
    ...
    compile 'com.android.volley:volley:1.1.0'
}

Bu kod satırını ekledikten sonra projemizi rebuild ederek ekleme işlemlerini tamamlamış oluyoruz.


Manifest Dosyasına İnternet Erişim İznini Eklemek

Android uygulamaların uzak sunuculardan veriler alabilmesi için manifest dosyasında internet iznini tanımlamaları gerekir. İnternet iznini eklemezsek proje çalışmayacaktır.

Android Manifest dosyasına aşağıdaki izni ekliyoruz :

<uses-permission android:name="android.permission.INTERNET" />

Bu iki işlemide Volley kütüphanesini kullanacağınız uygulamalara ekleminiz gerekmektedir.


Request Queue (İstek Kuyruğu) Oluşturmak

Volley ile bir istek kuyruğu oluşturmak için newRequestQueue()metodunu kullanmamız gerekiyor. Oluşturulan bu istek kuyruğu  ile istediğiniz bir isteği uygulayabilirsiniz.

Java’da istek kuyruğu tanımlama

RequestQueue queue = Volley.newRequestQueue(this);

Kotlin‘de istek kuyruğu tanımlama

val queue = Volley.newRequestQueue(this)

İstek Nasıl Gönderilir ?

Oluşturulan bir isteği göndermek için RequestQueue sınıfının add() metodu kullanılır. Bu metot yardımıyla istek kuyruğuna yeni bir istek eklenir ve bu istek gönderilir. Aşağıda örnek bir istek oluşturalım. Oluşturduğumuz isteğide gönderelim. Örneğimizi Java ile yapıyoruz.

final TextView mTextView = (TextView) findViewById(R.id.text);

// RequestQueue ayarları yapılıyor.
RequestQueue queue = Volley.newRequestQueue(this);
String url ="http://www.google.com";

// Sağlanan URL’den bir dize yanıtı istenmektedir.
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
            new Response.Listener<String>() {
    @Override
    public void onResponse(String response) {

       // Yanıt dizesinin ilk 500 karakterini görüntüleniyor.
        mTextView.setText("Response is: "+ response.substring(0,500));
    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        mTextView.setText("That didn't work!");
    }
});

//isteği RequestQueue ekliyoruz.
queue.add(stringRequest);

Örneğimizi Java ile yaptıktan sonra Kotlin ile nasıl yapılır merak edenler için aşağıya aynı örneğin Kotlin ile yapılmış halini ekliyorum.

val textView = findViewById<TextView>(R.id.text)

val queue = Volley.newRequestQueue(this)
val url = "http://www.google.com"

val stringRequest = StringRequest(Request.Method.GET, url,
        Response.Listener<String> { response ->
            textView.text = "Response is: ${response.substring(0, 500)}"
        },
        Response.ErrorListener { textView.text = "That didn't work!" })

queue.add(stringRequest)

Örneğimizde String bir istek tanımladık. Sonra bir url değişkenine “google” adresini verdik. StringRequest ile ilgili gerekli işlemleri yaptık. Eğer işlemler başarılı olursa textView içine çekilen verilerin 0 ile 500 karakterini yazdıracağız. İşlem başarısızsa textView içine hata mesajı yazdırılacak. Son olarak bu isteğe kuyruğa ekleyerek işlemi tamamlamış oluyoruz.

Volley ile ilgili arka planda neler olup bitiyor birde ona bakalım isterseniz :

system bars

add() metodunu çağırdığımız zaman Volley, cache thread ve network thread yapılarını çalıştırır. Kuyruğa eklenen bir istek öncelikle cache thread tarafından alınır. Yeşil renkli olan yapılar cache threadlerdir. Bu istek eğer cache bellekte varsa istek sonucunu doğrudan main thread’e yollanır. Eğer bu istek cache bellekte yoksa istek network thread’e gönderilir ve istek kuyruğuna eklenir. Bu thread’e verilen istekler, network thread tarafından istek kuyruğuna çekilir, HTTP gerekli işlemleri yapar ve sonuçları tekrar main thread’e yollanır. Bu yollardan herhangi birini takip ederek gereken işlemler yapılır ve istek sonuçları kullanıcıya gösterilir.


İstek Nasıl İptal Edilir ?

Bir isteği iptal etmek için Request nesnesinde bulunan cancel () metdounu çağırın. Bir kez iptal edildiğinde, Volley yanıt işleyicinizin asla çağrılmayacağını garanti eder. Bunun pratikteki anlamı size etkinliğin OnStop () yönteminde bekleyen tüm istekleri iptal edebilirsiniz. Aşağıdaki örnekte kuyruğa bir şey ekleniyor. Eklenen veriyi nasıl iptal edeceğiz onu göreceksiniz.

1- Etiketimizi tamamlayıp isteğimizi ekliyoruz.

Java’daki kullanımı : 

public static final String TAG = "MyTag";
StringRequest stringRequest; // String request tanımı
RequestQueue mRequestQueue;  // İstek kuyruğu tanımı

// tanımlanan tag değeri string request'e eklendi.
stringRequest.setTag(TAG);

// request değeri ise kuyruğa eklendi.
mRequestQueue.add(stringRequest);

Kotlin’deki kullanımı :

val TAG = "MyTag"
val stringRequest: StringRequest// String request tanımı.
val requestQueue: RequestQueue? // İstek kuyruğu tanımı

// tanımlanan tag değeri string request'e eklendi.
stringRequest.tag = TAG

// request değeri ise kuyruğa eklendi.
requestQueue?.add(stringRequest)

2- onStop () metoduyla oluşturulan istekleri ve işlemleri iptal ediyoruz.

Java’daki kullanımı : 

@Override
protected void onStop () {
    super.onStop();
    if (mRequestQueue != null) {
        mRequestQueue.cancelAll(TAG);
    }
}

Kotlin’deki kullanımı :

protected fun onStop() {
    super.onStop()
    requestQueue?.cancelAll(TAG)
}

İstekleri iptal ederken dikkatli olmak gerekir. Bir daveti ilerletmek veya başka bir işlemi başlatmak için yanıt işleyicinize (response handler) bağlıysanız, bunu hesaba katmanız gerekir. Bunu göz ardı ederseniz hatalarla karşılaşabilirsiniz.


Request Yapılandırması 

Tüm uygulamalarda kullanabileceğimiz ve her uygulamada bulunması gereken yapılandırılmış bir istek kuyruğu oluşturuyoruz.

class Singleton private constructor(context: Context) {

    private var mRequestQueue: RequestQueue? = null

    val requestQueue: RequestQueue?
        get() {
            if (mRequestQueue == null) {
                mRequestQueue = Volley.newRequestQueue(mCtx?.applicationContext)
            }
            return mRequestQueue
        }

    init {
        mCtx = context
        mRequestQueue = requestQueue
    }

    fun <T> addToRequestQueue(req: Request<T>) {
        requestQueue?.add(req)
    }

    companion object {
        private var mInstance: Singleton? = null
        private var mCtx: Context? = null

        @Synchronized
        fun getInstance(context: Context?): Singleton? {
            if (mInstance == null) {
                mInstance = Singleton(context!!)
            }
            return mInstance
        }
    }
}

Kotlin dilinde request yapılandırmasını yaptık. Bu sınıfı volley kullanmak istediğiniz her uygulamaya ekleyip kullanabilirsiniz. Farklı bir örnek olması açısından Android’in sitesinde image kullanımı ile ilgili hem Java hem de Kotlin dili ile ilgili kodların bulunduğu örneği aşağıdaki linkten ulaşabilirsiniz :

https://developer.android.com/training/volley/requestqueue#java

Bu yapıları ilerleyen yazılarımda örneklerle açıklayarak anlatacağım.

Son olarak Request’te kullanılan sınıflardan bahsedeceğim.

Standart Request Sınıfları 

Volley ile gelen en önemli yapılar kuşkusuz standart istekleridir.

Bunlar aşağıdaki gibidir :

  1. String Request: URL bilgisi verilen bir sunucudan string verileri almak için kullanılan sınıflardır.
  2. Image Request: URL bilgisi verilen bir sunucudan resim verileri almak için kullanılan sınıflardır.
  3. JSON Object Request: URL bilgisi verilen bir sunucudan JSON nesnesi almak için kullanılan sınıflardır.
  4. JSON Array Request: URL bilgisi verilen bir sunucudan JSON dizisi almak için kullanılan sınıflardır.

Evet arkadaşlar bu yazımda sizlere Android programlamada Volley nasıl kullanılır ondan bahsettim. Gelecek derslerde Volley kullanarak bir mini hava durumu uygulaması yapmayı planlıyorum. Lütfen takipte kalınız 🙂 Kendinize iyi bakın.

Yararlandığım Kaynaklar 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir