سفارش تبلیغ
صبا ویژن

کتابخانه VOLLEY چیست؟ کتابخانه والی در اندروید

کتابخانه VOLLEY چیست؟ کاربرد و مزایای آن

 مدت زمان مطالعه : 10 دقیقه

 

میخواهم امروز شما رو با یکی از کتابخانه های برنامه نویسی اندروید به نام کتابخانه VOLLEY آشنا کنم. مطمئن نیستم که شما تا به حال کلمه ی Volley را شنیده باشید. اگر می خواهید با این کتابخانه آشنا شوید پیشنهاد میکنم تا انتهای این مقاله با لرن فایلز همراه باشید. کتابخانه VOLLEY در حقیقت کتابخانه ای است که توسط سخنرانی Ficus Kirkpatrick در سال 2013 در مورد Google IO ارائه شد.

 

کاربرد کار با کتابخانه والی :

 کتابخانه VOLLEY کتابخانه ای است که شبکه کردن نرم افزار های اندروید را ساده کرده و مهم تر از همه سریع تر می کند. این سرویس، پردازش و ذخیره سازی فراخوان ها و درخواست های برنامه نویسان اندرویدی را مدیریت می کند و با ذخیره کردن زمان برای آن ها به آن ها کمک می کند تا کد های لازم و تکراری را بارها و بار ها فراخوانی کنند. کد های کم تر، به معنی باگ کم تر است که هدف اصلی برنامه نویسان است. منظور من، کد های شبکه یا برای مثال کد های منطق و Async Task است که شما آن ها را برای دریافت پاسخ از API های شبکه ای و نمایش آن ها به شکل مناسب استفاده می کنید. باید Progress window / Progress bar را در قسمت ()PreExecute و ()onPostExecute قرار بدهیم. می دونم که این کار سختی نیست اما کمی کسل کننده است و خود منم خیلی وقت ها موقع کد نویسی برای Progress window ،Progress bar، اجراش و کار های مشابه حوصلم سر میره. پس می‌تونیم از سرویس volley به جای Async استفاده کنیم.

مزیت های استفاده از کتابخانه VOLLEY

  • Volley به شکل اتوماتیک تمامی در خواست های شبکه را زمان بندی می کند.
  • Volley تمامی در خواست های شبکه ای که برنامه ی شما آن ها را اجرا می کند را انجام می دهد و تصویر و پاسخ مورد نظر را از اینترنت برای شما می گیرد.
  • Volley دیسک و حافظه ی شفاف برای ذخیره ی سازی در اختیار شما قرار می دهد.
  • Volley امکان کنسل کردن درخواست API را در اختیار شما می گذارد. یعنی که می توانید درخواست تکی و یا مجموعه ای از دستور ها را هم زمان کنسل کنید.
  • Volley توانایی سفارشی کردن بسیار قوی در اختیار شما می گذارد
  • Volley ابزار هایی برای رفع اشکال و پیگیری دارد.

چگونه کار با والی را آغاز کنیم ؟

  • پروژه‌ی Volley را Clone کنید!
  • کد را در پروژه خود Import کنید!

پروژه ی volley را کلون کنید:

1 Git Clone Https://Android.Googlesource.Com/Platform/Frameworks/Volley
clone-the-volley
 

فولدری به نام volley  ایجاد شده است. حالا  باید این شاخه را در یک بستر  و یا استودیوی اندرویدی سوار کنیم. من از Git GUI client بر روی سیستم ویندوزم استفاده می کنم.

حالا فرض کنید که سیستم شما Git client  ندارد و شما می خواهید کلون کنید پس باید با کمک eclipse یا ADT bundle مستقیما این کار را انجام دهید.

دو کلاس اصلی volley

دو کلاس اصلی در Volley  وجود دارد:

  • Request-Queue
  • Request

Request-queue: این دقیقا هدف درخواستی شما در شبکه است و می توانید این صف درخواست را موقع نیاز ایجاد کنید اما بهتر است در زمان شروع این کار را انجام دهید و از آن به عنوان singleton استفاده کنید.

Request: شامل تمامی جزئیاتی است که برای فراخوان API در شبکه مورد استفاده قرار می گیرند. برای مثال، از متد GET یا POST در Data request برای انتقال Voice response وError response به کار می رود.

به این روش درخواست زیر در JSONObjectRequest توجه کنید :

jsonobjectrequest
 

کار با کتابخانه VOLLEY در اندروید :

خوب احساس من اینه که شما تا الان کتابخانه VOLLEY رو از Git repo دانلود کرده اید. حالا، مراحل زیر را طی کنید تا مثالی ساده از دریافت توییت ها و نمایش آنها در منوی نمایش خود داشته باشید.

مرحله ی اول

مطمئن شوید که پروژه ی volley را در eclipse  بارگذاری کرده اید، بعد از بارگذاری پروژه باید یک library project بسازیم. راست کلیک کرده و گزینه‌ی Properties > android >  منوی سمت چپی را انتخاب کنید.

use-volley-library
 

مرحله ی دوم

حالا بر روی پروژه ی جدید کلیک کنید و نام آن را volley example بگذارید.

مرحله ی سوم

بر روی volley example راست کلیک کنید و گزینه ی volley library  را انتخاب کنید.

use-volley-library2
 

مرحله ی چهارم

مجوز INTERNET را در فایل AndroidManifest.xml به شکل زیر قرار دهید:

 

مرحله ی پنجم

آبجکت زیر را در کلاس RequestQueue  ایجاد کنید :

 

1 RequestQueue queue = Volley.newRequestQueue(this);

دستور JSONObjectRequest را با پاسخ خطا ایجاد کنید:

01 String url = "https://www.googleapis.com/customsearch/v1?key=AIzaSyBmSXUzVZBKQv9FJkTpZXn0dObKgEQOIFU&cx=014099860786446192319:t5mr0xnusiy&q=AndroidDev&alt=json&searchType=image";
02 JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.GET, url, nullnew Response.Listener() {
03 @Override
04 public void onResponse(JSONObject response) {
05 // TODO Auto-generated method stub
06 txtDisplay.setText("Response => "+response.toString());
07 findViewById(R.id.progressBar1).setVisibility(View.GONE);
08 }
09 }, new Response.ErrorListener() {
10 @Override
11 public void onErrorResponse(VolleyError error) {
12 // TODO Auto-generated method stub}
13 });

دستور زیر را در RequestQueue قرار دهید :

1 queue.add(jsObjRequest);

نهایتا کد های فایل MainActivity.java را کامل کنید :

01 package com.technotalkative.volleyexamplesimple;
02 import org.json.JSONObject;
03 import android.app.Activity;
04 import android.os.Bundle;
05 import android.view.Menu;
06 import android.view.View;
07 import android.widget.TextView;
08 import com.android.volley.Request;
09 import com.android.volley.RequestQueue;
10 import com.android.volley.Response;
11 import com.android.volley.VolleyError;
12 import com.android.volley.toolbox.JsonObjectRequest;
13 import com.android.volley.toolbox.Volley;
14 }
15 public class MainActivity extends Activity {
16 private TextView txtDisplay;
17 @Override
18 protected void onCreate(Bundle savedInstanceState) {
19 super.onCreate(savedInstanceState);
20 setContentView(R.layout.activity_main);
21 txtDisplay = (TextView) findViewById(R.id.txtDisplay);
22 RequestQueue queue = Volley.newRequestQueue(this);
23 String url = "https://www.googleapis.com/customsearch/v1?key=AIzaSyBmSXUzVZBKQv9FJkTpZXn0dObKgEQOIFU&cx=014099860786446192319:t5mr0xnusiy&q=AndroidDev&alt=json&searchType=image";
24 }()
25 JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.GET, url, nullnew Response.Listener() {
26 @Override
27 public void onResponse(JSONObject response) {
28 // TODO Auto-generated method stub
29 txtDisplay.setText("Response => "+response.toString());
30 findViewById(R.id.progressBar1).setVisibility(View.GONE);
31 }
32 }, new Response.ErrorListener() {
33 @Override
34 public void onErrorResponse(VolleyError error) {
35 // TODO Auto-generated method stub
36 }
37 });
38 queue.add(jsObjRequest);
39 }
40 @Override
41 public boolean onCreateOptionsMenu(Menu menu) {
42 // Inflate the menu; this adds items to the action bar if it is present.
43 getMenuInflater().inflate(R.menu.main, menu);
44 return true;
45

}

منبع: لرن فایلز