استفاده از کتابخانه Volley

استفاده از کتابخانه Volley

سلام دوستان؛

کتابخانه volley در حقیقت یک کتابخانه شبکه(معمولا برای استفاده از اینترنت) در آندروید است که فراخوانی شبکه را بسیار ساده تر، سریع تر و بدون نیاز به نوشتن حجم زیادی از کدها کرده است. به طور پیش فرض کتابخانه volley به صورت غیرهمزمان(asynchronously) کار میکند، پس نیاز نیست که برای استفاده از asynctask نگران باشید.

کتابخانه volley ویژگی های منحصر به فردی دارد که بعضی ار آنها عبارتند از:

۱.صف درخواست و الویت بندی

۲.استفاده موثر از cache و مدیریت حافظه

۳.توسعه و سفارشی سازی کتابخانه با توجه به نیاز ما

۴.لغو درخواست

۱.ساخت یک پروژه جدید

 

۱.در Android Studio پروژه جدید، یک ایجاد میکنیم.

۲.برای سازماندهی بهتر برنامه، دو بسته (packages) بسازید و نام آن ها را app و utils قراردهید.

۳.قسمت build.gradle را باز کنید و کتابخانه volley را به آن بیافزایید.

compile ‘com.mcxiaoke.volley:library-aar:*.*.*0’

۱.۱ ایجاد کلاس Volley Singleton

۴.در پکیج utils، یک کلاس به نام LruBitmapCache.java بسازید و  کدهای زیر را درون آن قرار دهید. این کلاس برای مدیریت cache مربوط به عکس استفاده میشود.

۵.درون پکیج app، یک کلاس به نام AppController.java که از Application ارث بری(extend) میکند بسازید و برای استفاده از کتابخانه volley کدهای زیر را درون آن قرار دهید.

۶. اکنون AndroidManifest.xml را باز کنید و مجوز استفاده از INTERNET را درون آن قرار دهید.

در حال حاضر راه اندازی های اولیه برای کتابخانه volley انجام شده است. اکنون بیایید فعالیت های لازم برای درخواست http را انجام دهیم.

 

۲.ساخت درخواست JSON

 

کتابخانه volley به صورت ساده درخواست json را فراهم میکند. اگر شما نیاز به پاسخ در شی json دارید باید از کلاس JsonObjectRequest استفاده کنید و در صورت json پاسخی دارد باید از کلاس JsonArrayRequest استفاده کنید.

۲.۱.ساخت json object request

کد زیر یک درخواست json را که با “{” نشانه گذاری شده است را شروع میکند.

۲.۲. ساخت json array request

کد زیر یک درخواست json را که در آن پاسخ با “[” نشانه گذاری شده است را شروع میکند.

۳. ساخت درخواست String

 

کلاس StringRequest برای دریافت هرنوع اطلاعات که از نوع string است را میتوان استفاده کرد. این درخواست میتواند json, xml, html یا… باشد.

۴.اضافه کردن post parameters

 

واضح است که ما گاهی اوقات نیاز به ارائه درخواست داریم. برای انجام این کار ما نیاز به استفاده از ()getParams برای یک ارزش کلیدی داریم.

به عنوان مثال در مثال زیر من یک نام، ایمیل و رمز عبور ارسال میکنم.

۵.اضافه کردن request headers

 

درست مانند اضافه کردن پارامتر درخواست، برای ارسال هدر درخواست (headers) ما باید از ()getHeaders بهره ببریم. در این مثال ارسال مطالب، نوع و apiKey درخواست شده است.

۶.ساخت Image request

 

کتابخانه volley یک عنصر سفارشی سازی شده نمایش تصویر به نام NetworkImageView برای نمایش یک عکس از URL را معرفی کرده است.

۶.۱ بارگذاری تصویر در NetworkImageView

۶.۲ اگر شما میخواهید تصویر را در ImageView به جای NetworkImageView استفاده کنید، میتوانید به صورت زیر عمل کنید. در کد زیر ما بازخورد موفقیت (success) و خطا (error ) را داریم و باتوجه به نیاز از آنها بهره میبریم. در زیر درون متد ()onResponse از ()response.getBitmap برای بارگذاری تصویر در ImageView استفاده میکنیم.

۶.۳ تعریف placeholder image and error image

در اینجا یک دیگر از راه های نمایش تصویر در ImageView استفاده از placeholder image and error image است. placeholder image and error image زمانی نمایش دادده خواهد شد که تصویر دانلود شود. اگر تصویر دانلود نشود، بخش خطا نمایش داده خواهد شد.

۷.مدیریت کش(cache) در volley

 

کتابخانه volley از مکانیزم قوی و قدرتمند برای حفظ کش(cache) استفاده میکند. این فعالیت موجب صرفه جویی زیادی در مصرف پنهای باند و مدت زمان انتظار کاربران میشود. در زیر چند روش استفاده از کش(cache) ذکر شده است:

۷.۱ بارگذاری تصویر از کش(cache)

مانند زیر شما میتوانید کش(cache) را قبل از برقراری تماس با URL بررسی کنید.

۷.۲ باطل کردن کش (cache)

باطل کردن کش(Cache) به معنی بی اعتبار کردن آن است و نه به معنی حذف کامل آن. Volley همچنان از کش(Cache) استفاده میکند تا زمانی که داده(data) جدیدی را از شبکه دریافت میکند و سپس داده(data)های جدیدی را دریافت میکند و از آنها استفاده میکند.

۷.۳ خاموش کردن کش(cache)

اگر شما میخواهید استفاده از کش (cache) را غیرفعال کنید میتوانید از ()setShouldCache برای انجام این کار استفاده کنید.

۷.۴ حذف کش(Cache) مربوط به یک دامنه خاص

۷.۵ حذف تمامی کش(Cache)ها

شما میتوانید به صورت زیر تمامی کش(Cache)ها را به صورت زیر حذف کنید.

۸.لغو درخواست

 

شاید شما هم تا الان متوجه شده اید که صف درخواست دو مقدار میپذیرد. یکی از اینها شی است و دیگری تگ درخواست است((RequestQueue(request, tag). این تگ برای شناسایی درخواست در زمان لغو آن است. اگر تگ تعداد زیادی درخواست دارد تمام آن درخواست ها لغو میشود. متد ()cancellAll برای لغو هر درخواستی استفاده میشود.

۸.۱  لغو یک درخواست

در کد زیر ما درخواستی با تگ “feed_request” را لغو میکنیم.

۸.۲ لغو تمامی درخواست ها

در کد زیر ما تمامی درخواست ها را لغو کرده ایم.

۹.الویت بندی درخواست

 

اگر شما درحال چندین درخواست به صورت همزمان هستید میتوانید آنها را براساس نیازتان الویت بندی کنید، الویت ها به صورت عادی، پایین، فوری و بالا است.

 

موفق و با انرژی باشید 🙂

مدرس و برنامه‌نویس اندروید. تمام تجربه‌هایم را با شما شریک می‌شوم و دوستت دارم بتوانم با کمک و همراهی همه دوستان یک مرجع کامل فارسی برای برنامه‌نویسی اندروید ایجاد کنم.

عضو می‌شوم:)

مقاله های مرتبط :

دیدگاه خود را بیان کنید :

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

۶ دیدگاه برای این مطلب ثبت شده است

  1. مجید
    ۱۰:۰۶ ۱۳۹۵/۱۲/۰۳

    چقدر کامل و خوب بی نهایت سپاس
    خدا خیرتون بده

    • سیما یزدان پناه
      ۸:۱۲ ۱۳۹۵/۱۲/۰۴

      سلام، ممنون از لطف و توجهتون. منتظر نظرات بیشتر شما هستیم.
      نظرات شما موجب دلگرمی ماست.

  2. امیر
    ۱۲:۴۴ ۱۳۹۵/۱۲/۱۳

    با عرض سلام و خسته نباشید و ممنون از مطالب مفیدتون
    من برای یه برنامه میخوام که کاربر عکسی که با گوشیش گرفته(حجم ۸ مگ) رو تو سرور آپلود کنم.ولی نمیشه و خطا میده البته برای عکس های با حجم کم درست کار میکنه.با استفاده از string request این کار رو انجام دادم.
    ممنون میشم راهنمایی کنید.

    • امیر زنگی آبادی
      ۱۱:۵۱ ۱۳۹۵/۱۲/۱۵

      باسلام و تشکر
      از لینک زیر میتوانید استفاده کنید:
      yon.ir/896i
      سعی می کنیم که این آموزش را به صورت فارسی و کاملتر در سایت نیز قرار دهیم.
      موفق و پیروز باشید.

  3. Cityamin
    ۲:۰۳ ۱۳۹۶/۰۶/۲۰

    عالیه بود خدا قوت