no-img
سامنتا

کارگاه آموزشی کتابخانه ی volley در اندروید


سامنتا
دانلودهای ویژه
اطلاعیه های سایت

ادامه مطلب

MP4
کارگاه آموزشی کتابخانه ی volley در اندروید
امتیاز 4.64 ( 11 رای )
mp4
فروردین ۳۰, ۱۳۹۵
160 مگابایت
1 ساعت و 30 دقیقه
۹,۰۰۰ تومان
۹,۰۰۰ تومان – خرید

کارگاه آموزشی کتابخانه ی volley در اندروید


کارگاه یک روزه ی  آموزش کامل استفاده از کتابخانه ی Volley بصورت ویدیویی و  با کیفیت فول Full Hd  توسط عباس نیکزاد تهیه شده است 


دموی کارگاه یک روزه ی Volley را مشاهده کنید  (دمو با کیفیت HD ارسال شده اما ممکن است به دلایل آپارت به صورت HD برای شما نمایش ندهد به همین منظور روی کیفیت کلیک کنید و HD یا ۷۲۰ را انتخاب کنید تا با کیفیت اصلی مشاهده فرمائید) 

 

فایل jar کتابخانه ی volley و همچنین فیلم آموزش این مقاله بصورت کامل به آخر مقاله افزوده شد . لطفا از آخر این مقاله دیدن کنید .

volley کتابخانه ای شبکه در اندروید میباشد که توسط گوگل در سال ۲۰۱۳ معرفی و تا به امروز توسعه داده شده است . این کتابخانه بخاطر عدم وجود یک کلاس قدرتمند درون SDK اندروید ، که بتواند بدون تداخل به فعالیت های اصلی برنامه ، کارهای شبکه را انجام دهد ، توسعه داده شده است . 

قبل از بوجود آمدن این کتابخانه ، برنامه نویس ها مجبور بودند برای کارهای توسعه ی برنامه های مبتنی بر RESTful که ارتباط بین کلاینت و سرور را برقرار میکرد ،  از کلاس های java.net.HttpURLConnection که مربوط به java میباشد یا کلاس org.apache.http.client که توسط آپاچی توسعه داده شده بود ، استفاده کنند.

اگر کمی با کلاس های بالا که ذکر شد کار کرده باشید به سرعت متوجه مشکلات و باگ های موجود در آن ها خواهید بود . مثلا اگر بخواهید از سیستم کشینگ استفاده کنید یا درخواست ها را صف بندی کنید ، قابلیت هایی هستند که توسط کتابخانه ی volley به راحتی میتوانید . 

۱ . چرا کتابخانه volley ؟

برای جلوگیری از استفاده ی مجدد از  HttpUrlConnection  و HttpClient

در نسخه های پایین تر اندروید (بیشتر در نسخه ی های ۲٫۲ و ۲٫۳ اندروید ) کلاس های HttpUrlConnection  و HttpClient  ، با مشکلات فراوان و باگ های بسیاری منتشر شدند . مشکلات و باگ هایی که هرگز رفع نشدند .HttpClient  در بروزرسانی نسخه ی api 22 اندروید ، منسوخ اعلام شد . این بدین معنی بود که ممکن است از این کلاس در آینده استفاده نشود و در بروزرسانی های بعدی به کل از SDK اندروید پاک شود که چنین اتفاقی هم افتاد . 

من فکر میکنم همین بزرگترین دلیل میتونه باشه که به یه کتابخانه یا کلاس قابل اعتماد ، برای انجام درخواست های شبکه ای در اندروید ، مراجعه کنیم !

 برای جلوگیری از استفاده ی کلاس AsyncTask  

بعد از منتشر شدن api 11 اندروید ، یک نوع اجباری برای برنامه نویسان اندروید بود که کارهای شبکه یا به اصطلاح دیگر، درخواست های شبکه را درون یک ترد دیگری به جز ترد اصلی برنامه  انجام دهند . منظور از ترد همان نخ در برنامه نویسی هستند و در اینجا اشاره به چند نخی دارد ! برنامه نویسان مجیور به فراگیری چند نخی و قراردادن دستورالعملهای مربوط به شبکه درون یک نخ دیگر بودند ، همین موضوع باعث استفاده ی عظیم از AsyncTask<Params, Progress, Result> در این مدت شد .

با استفاده از AsyncTask  ، شما باید مقدمات کلاس خود را درون متدی به نام onPreExecute انجام میدادید کارهایی اعم از تعریف context برنامه و …

سپس درخواست های ناهمگام را درون متدی به نام doInBackground  انجام دهید و سپس نتیجه را به onPostExecute هُل دهید و نهایتا" درون همین متد ، نتیجه را به ویوها ارجاع دهید تا نمایش داده شوند .

استفاده از این کلاس بسیار زیبا و سرراست و به همراه تنی از مثال ها و آموزش ها بود .

اما اصلی ترین مشکل کلاس این بود که شما نمیتوانستید هیچ ترتیبی برای درخواست ها قائل شوید و همانطور که میدانید بر اساس الگوریتم FIFO ، به تمام درخواست های درون این کلاس رسیدگی میشود . هر درخواستی جدیدتر از همه باشد سریعتر از همه هم انجام خواهدد شد که باعث بوجود آمدن مشکلاتی در آینده خواهد بود مخصوصا زمانی که درخواست های ما ، اولویت های گوناگون زمانی داشته باشند 

در برنامه های اندرویدی فیسبوک و توئیتر و … که از لیست های طولانی استفاده میکردند مشکلاتی بوجود می آمد یکی از این مشکلات به این شرح بود : وقتی که شما یک لیستی را باز میکردید که هر آیتم لیست دارای یک تصویر بند انگشتی بود ، زمان اسکرول به پایین انتظار میرفت که ابتدا JSON لود شود و سپس تصاویر بند انگشتی که الویت بندی کردن در این حالت ها امکان پذیر نبود 

کتابخانه ی volley این مشکل را نیز برای برنامه نویسان حل کرد ! دیگر نیازی به چک کردن onPostExecute  نبود و همچنین از خطاهایی مانند NullPointerException که یکی از مشکلات استفاده از کلاس AsyncTask برای درخواست های شبکه ای بود ، جلوگیری به عمل می آمد . 

سرعت بالای Volley 

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

volley همه چیز را Cache میکند 

volley بطور خودکار تمام درخواست ها را کش میکند و این یعنی صرفه جویی در زمان ، برای درک بهتر بیایید به مثالی که در بالا زدیم برگردیم ، لیستی دراز که درون هر آیتم یک تصویر بند انگشتی و یک متن توضیحی وجود دارد .

حالا فکر کنید چه اتفاقی میوفتد اگر کاربر گوشی خود را بچرخاند ! : اکتیویتی ریستارت میشود ( چرخه ی حیات اکتیویتی ) ، درخواست مجددا از طریق شبکه ارسال میشود و محتویات لیست دوباره دانلود میشود ، بطور خلاصه این عمل یعنی هدر دادن زمان و حجم اینترنت کاربری و همچنین ایجاد حس بد نسبت به برنامه .

در اینجا نیز کتابخانه ی volley بار دیگر توانایی خود را ثابت میکند . Volly تمام کارهایی که انجام گرفته است را میتواند به خاطر بیاورد ، آنها را به متد تخریب اکتیویتی پاس کند و مجددا در متد ساخته شدن مجدد اکتیویتی بازیابی کند ، volley همه چیز را کش میکند بدون اینکه شما نگرانی داشته باشید .

دستورالعمل های کوچک در volley 

کتابخانه ی volley بخاطر کدنویسی و فراخوانی های کمتر ، یک کتابخانه ی عالی در زمینه ی درخواست های شبکه در برنامه های اندرویدی هست .درخواست هایی مانند : JSON objects ، دریافت بخش هایی  از یک لیست ، چزئیات آیتم انتخاب شده و غیره . همه ی ما میدانیم که volley فقط و فقط با یک هدف بوجود آمده است و آن هم برنامه های مبتنی بر RESTful ، و مطمئنا" هر چیزی مخصوص یک کاری باشد کارآیی بهتری خواهد داشت .

به هرحال کتابخانه ی volley برای کارهایی نیز نامناسب میباشد ، کارهایی مانند stream کردن یا دانلود های عظیم . لازم به ذکر است که نام این کتابخانه هیچ ارتباطی به ورزش والیبال ندارد و نام این کتابخانه نیز از لغتنامه ی ورزشی انتخاب نشده است 

۲ . بررسی هسته ی کتابخانه ی volley

کتابخانه ی volley از سه سطح مختلف تشکیل شده است که هر کدام از سطح های آن ، در ترد خود عمل میکند 

 

سطوح مختلف کتابخانه ی volley اندروید

سطوح مختلف کتابخانه ی volley اندروید

 

 

ترد اصلی در کتابخانه ی Volley

در این مقاله منظور از کلمه ی "ترد" همان thread یا نخ میباشد

در thread اصلی volley  همانند AsyncTask ، شما فقط اجازه ی ایجاد و ارسال درخواست ها و همچنین دریافت پاسخ ها را دارید نه چیز بیشتر ! 

نتیجه ی اصلی این هست که شما هر کاری را که در متد doInBackground درون کلاس AsyncTask  انجام میداد را بتوانید به راحتی فراموش کنید چون کتابخانه ی volley بطور خودکار درخواست های HTTP را مدیریت میکند و خطاهای شبکه را که برای شما اهمیت دارند را شناسایی میکند 

کَش و ترد های شبکه در کتابخانه ی Volley

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

در تردهای شبکه ، یک درخواست به همراه یک سری از ترد ها بطور مداوم در حال فعالیت هستند ، اولین ترد شبکه ی در دسترسی به درخواست رسیدگی میکند و درخواست HTTP را صادر میکند ، نتیجه را تجزیه و تحلیل و یا به اصطلاح پارس میکند ، همچنین نتیجه را در کش ذخیره میکند ، در نهایت نتیجه به ترد اصلی برنامه تحویل داده میشود همان جایی که listener منتظر دریافت پاسخ هست .

۳ . شروع کار با Volley

گام اول : افزودن کتابخانه ی volley به پروژه 

اگر از محیط اندروید استودیو استفاده میکنید میتوانید به روش های زیر کتابخانه ی volley را به محیط پروژه ی خود اضافه کنید 

یکی از راه ها دانلود کردن فایل jar کتابخانه ی volley می باشد و راه دیگر افزودن این پروژه بصورت آنلاین از طریق گردل میباشد در این مقاله قصد ما آموزش نحوه ی ایمپورت کردن کتابخانه نیست و اطلاعات بیشتر در مورد نحوه ی افزودن کتابخانه به محیط اندروید استودیو یا ایکلیپس را به خودتان محول میکنیم و فقط بطور مختصر نحوه ی افزودن انها در محیط اندروید استودیو را ذکر میکنیم : 

برای اضافه کردن انلاین باید فایل build.gradle  پروژه ی خود را باز کنید و در قسمت dependency  خط زیر را اضافه کنید تا بطور خودکار دانلود و به پروژه ی شما اضافه شود : 


 

compile 'com.mcxiaoke.volley:library-aar:1.0.15'

و یا اینکه فایل jar این کتابخانه را دانلود کنید و در پوشه ی libs پروژه ی خود کپی کنید و روی فایل راست کلیک کرده و add as library را بزنید تا به راحتی به پروژه ی شما افزوده شود 

گام دوم: نحوه ی استفاده از کتابخانه ی volley

کتابخانه ی volley اکثر اوقات با دو کلاس سر و کار دارد ، کلاس های RequestQueue  و Request . شما ابتدا بایستی یک RequestQueue  بسازید که ترد فعالیت را مدیریت میکند و نتایج پارس شده را تحویل ترد اصلی میدهد. سپس شما یک یا چند شی از نوع Request  را اضافه میکنید .

متد سازنده ی Request  همیشه پارامتری را بعنوان نوع متد  (GET , POST و …) ، URL منبع ، Listener های رویداد ها دربر دارد . سپس بسته به نوع درخواست ممکن است متغیرهای و پارامترهای بیشتری نیز طلب کند . 

در مثال زیر ، من یک شی RequestQueue  درست کردم با فراخوانی یکی از راحت ترین متدهای volley به نام Volley.newRequestQueue .

مثال زیر یک شی RequestQueue  به همراه مقادیر پیشفرضی که در volley تعریف شده است را ایجاد میکند : 

  

String url = "http://httpbin.org/html";
// Request a string response
StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() { @Override public void onResponse(String response) { // Result handling System.out.println(response.substring(0,100)); }
}, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // Error handling System.out.println("Something went wrong!"); error.printStackTrace(); }
});
// Add the request to the queue
Volley.newRequestQueue(this).add(stringRequest);

 

 

 

همانطور که میبینید به طرز عجیبی این کدهای ساده و راحت هستند ، شما درخواست را ایجاد کرده اید و سپس به صف درخواست ها اضافه کرده اید و کارتان تمام شده است .

توجه کنید که کدهای listener شما مشابه با AsyncTask.onPostExecute  در کلاس AsyncTask خواهد بود فقط نامش onResponse هست به همین سادگی !

این اتفاقی نیست ، توسعه دهندگانی که از volley استفاده کرده اند ، تفاوت و سادگی متدهای volley نسبت به AsyncTask را درک میکنند

اگر شما درخواست های گوناگون در اکتیویتی های متفاوت را دارید شما باید از معماری بالا اجتناب کنید ، Volley.newRequestQueue.add .

بهتر است شما از یک صف به اشتراک گذاری شده بین درخواست های خود استفاده کنید : 

MySingletonClass.getInstance().getRequestQueue().add(myRequest);

۴ دست به کار شوید ( آموزش کتابخانه ی volley در اندروید )در دامه ی همین آموزش به این چنین کاربردهایی اشاره خواهم کرد و آموزش هایی نیز برای شما خواهم گفت . 

کتابخانه ی volley سه نوع درخواست پرکاربرد دارد : 

  • StringRequest
  • ImageRequest
  • JsonRequest

همه ی این کلاس ها از کلاس Result  ارث بری میکنند که قبلا از آن استفاده کردیم . در مثال بالا با StringRequest  آشنا شدیم بیایید با یک نوع کاربرد JsonRequest  آشنا شویم به کدهای زیر نگاهی بیاندازید : 

String url = "http://httpbin.org/get?site=code&network=tutsplus";
JsonObjectRequest jsonRequest = new JsonObjectRequest (Request.Method.GET, url, null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { // the response is already constructed as a JSONObject! try { response = response.getJSONObject("args"); String site = response.getString("site"), network = response.getString("network"); System.out.println("Site: "+site+"\nNetwork: "+network); } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { error.printStackTrace(); } });
Volley.newRequestQueue(this).add(jsonRequest);

همانند قبل ، اولین پارامتر ورودی سازنده ی این کلاس ، نوع درخواست HTTP میباشد ، سپس شما بایستی URL که قرار است JSON از آن فراخوانی شود را ارائه دهید . سومین پارامتر که در مثال بالا هم مقدار null هست این پاارامتر نشان میدهد که هیچ پارامتری به همراه درخواست ارسال نمیشود همانطور که می بینید ، نوع نتیجه ی بازگشتی متد JSONObject هست . اگر تمایل داشته باشید همچنین میتوانید یک JSONArray  داشته باشید با استفاده از JsonArrayRequest  بجای JsonObjectRequest .

درنهایت ، شما یک listener برای دریافت پاسخ JSON یا خطاهای احتمالی دارید همچنین شما میتوانید با درج null  از خطاها جشم پوشی کنید 

واکشی تصاویر ، مقداری تفاوت میکند ، سه راه ممکن برای واکشی تصاویر وجود دارد ImageRequest  یکی از استانداردترین راه هاست در این روش تصاویر در ImageView رایج نمایش داده میشود  از طریق URL ارائه شده .

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

گزینه ی دوم استفاده از کلاس ImageLoader  هست ، که برای درخواست های فراوان کاربرد دارد ، برای مثال ساختن یک Listview از تصاویر گزینه ی مناسبی هست .

سومین راه ، استفاده از NetworkImageView هست ،  که در آن لیستی از XML بجای ImageView استفاده میشود .

به مثال زیر نگاه کنید : 

String url = "http://i.imgur.com/Nwk25LA.jpg";
mImageView = (ImageView) findViewById(R.id.image);
ImageRequest imgRequest = new ImageRequest(url, new Response.Listener<Bitmap>() { @Override public void onResponse(Bitmap response) { mImageView.setImageBitmap(response); }
}, ۰, ۰, ImageView.ScaleType.FIT_XY, Bitmap.Config.ARGB_8888, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { mImageView.setBackgroundColor(Color.parseColor("#ff0000")); error.printStackTrace(); }
});
Volley.newRequestQueue(this).add(imgRequest);


سومین و چهارمین پارامتر اعداد صحیحی هستند که نشان دهنده ی حداکثر عرض و طول تصویر هستند (maxWidth  و maxHeight ) . شما میتوانید با قرار دادن مقدار ۰ این پارامترها را نادیده بگیرید بعد از آن ImageRequest  از شما در مورد ScaleType  ، که برای محاسبات تغییر اندازه و همچنین دیکد کردن bitmap نیاز هست سوال میکند من پیشنهاد میکنم از Bitmap.Config.ARGB_8888 استفاده کنید . و در نهایت یک listener برای خطا گذاشته ایم کار تمام است .اولین پارامتر آدرس URL تصویری هست که قصد واکشی آنرا داریم و پارامتر دومی نتیجه ای هست که بازگردانده میشود . 

توجه کنید که volley اولویت این درخواست را بطور خودکار روی LOW تنظیم میکند 


 

// Snippet taken from ImageRequest.java,
// in the Volley source code
@Override
public Priority getPriority() { return Priority.LOW;
}

سوئیچ کردن از یک درخواست GET به درخواست POST در Volley کار ساده ای هست ، شما باید Request.Method را که در متد سازنده ی کلاس درخواست وجود دارد را تغییر دهید و getParams  دوباره override کنید ، با نتیجه ی بازگشتی مناسب Map<String, String> که شامل پارامترهای درخواست هست

ساخت یک درخواست POST در کتابخانه ی Volley 


 

String url = "http://httpbin.org/post";
StringRequest postRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() { @Override public void onResponse(String response) { try { JSONObject jsonResponse = new JSONObject(response).getJSONObject("form"); String site = jsonResponse.getString("site"), network = jsonResponse.getString("network"); System.out.println("Site: "+site+"\nNetwork: "+network); } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { error.printStackTrace(); } }
) { @Override protected Map<String, String> getParams() { Map<String, String> params = new HashMap<>(); // the POST parameters: params.put("site", "code"); params.put("network", "tutsplus"); return params; }
};
Volley.newRequestQueue(this).add(postRequest);

اگر میخواهید تمام درخواست های  volley را لغو کنید قطعه کد زیر را به متد onStop  اضافه کنید 

لغو یک درخواست در کتابخانه ی volley 

 

@Override
protected void onStop() { super.onStop(); mRequestQueue.cancelAll(new RequestQueue.RequestFilter() { @Override public boolean apply(Request<?> request) { // do I have to cancel this? return true; // -> always yes } });
}

درخواست های POST و PUT ، به هر حال ، بایستی به کار خود ادامه دهند حتی اگر کاربر اکتیویتی را عوض کند . ما چنین کاری رو توسط تعریف tag ها نیز میتوانیم انجام دهیم ، وقتی که درخواست از نوع GET درست میکنید خط های زیر را برای افزودن tag اضافه کنید : این تنها راه هست و شما نیازی نیست که در مورد destroy کردن اکتیویتی توسط کاربر هنگام دریافت پاسخ از volley باشید . در چنین حالتی یک خطای NullPointerException  رخ خواهد داد . 

// after declaring your request
request.setTag("GET");
mRequestQueue.add(request);

 

برای لغو تمام درخواست های GET که در حال انجام هستند یا در انتظار انجام هستند ، خط زیر را به سادگی میتوانید اضافه کنید : 

 

mRequestQueue.cancelAll("GET");

مدیریت کوکی های و اولویت بندی درخواست ها در کتابخانه ی Volley این روش تنها درخواست های نوع GET را لغو میکند و دیگر درخواست ها دست نخورده باقی خواهد ماند .

کتابخانه ی volley بطور رسمی متدی را آماده نکرده است که با آن کوکی ها را مدیریت کرد و یا درخواست ها را اولویت بندی ، شاید در نسخه ی های بعدی این کمبود گنجانده شود ، به هر حال  شما باید از کلاس Request ارث بری کنید . 

برای مدیریت کوکی ها شما میتوانید با هدر های یک درخواست بازی کنید ، از متد getHeaders استفاده کنید : 

public class CustomRequest extends JsonObjectRequest { // Since we're extending a Request class // we just use its constructor public CustomRequest(int method, String url, JSONObject jsonRequest, Response.Listener<JSONObject> listener, Response.ErrorListener errorListener) { super(method, url, jsonRequest, listener, errorListener); } private Map<String, String> headers = new HashMap<>(); /** * Custom class! */ public void setCookies(List<String> cookies) { StringBuilder sb = new StringBuilder(); for (String cookie : cookies) { sb.append(cookie).append("; "); } headers.put("Cookie", sb.toString()); } @Override public Map<String, String> getHeaders() throws AuthFailureError { return headers; }
}

 

با این پیاده سازی شما میتوانید ، لیستی از کوکی های درخواست را با استفاده از setCookies آماده کنید .

/ Firstly, you create the list of the cookies,
// conformed to the HTTP conventions
// i.e. key=value
List<String> cookies = new ArrayList<>();
cookies.add("site=code");
cookies.add("network=tutsplus");
// then you invoke your custom method
customRequest.setCookies(cookies);
// and finally add the request to the queue
Volley.newRequestQueue(this).add(customRequest);

برای اولویت ، شما باید از کلاس Request  ارث بری کنید و متد getPriority  را بنویسید ، چیزی که مینویسید مشابه کدهای زیر خواهد بود : 

Priority mPriority;
public void setPriority(Priority priority) { mPriority = priority;
}
@Override
public Priority getPriority() { // If you didn't use the setPriority method, // the priority is automatically set to NORMAL return mPriority != null ? mPriority : Priority.NORMAL;

سپس ، در ترد اصلی ، خط زیر را برای اولویت بندی درخواست بنویسید : 

customRequest.setPriority(Priority.HIGH);

 

شما میتوانید از چهار حالت زیر استفاده کنید : 

 

Priority.LOW // images, thumbnails, ...
Priority.NORMAL // residual
Priority.HIGH // descriptions, lists, ...
Priority.IMMEDIATE // login, logout, ...

نتیجه گیری در مورد کتابخانه ی volley 

در این مقاله نگاهی به کاربرد و نحوه ی کار کردن کتابخانه ی volley انداختیم. در ابتدا دیدیم که کجا و چطور این کتابخانه برای درخواست های مبتنی بر شبکه ، نسبت به روش های دیگر بهتر است ، سپس وارد جزئیات کتابخانه شدیم ، نحوه ی گردش فعالیت ها و انواع درخواست های پشتیبانی شده را دیدیم .

در نهایت دست به کار شدیم و با آوردن مثال هایی سعی کردیم مطلب را روشن تر  و کامل تر بیان کنیم ، 

در آموزش های بعدی در این زمینه و در مورد کتابخانه ی Volley سعی میکنیم آموزشی پروژه محور تهیه کنیم 

موفق و پیروز باشید 

 

فایل jar برای نصب کتابخانه ی volley اضافه شد . در صورت نیاز از اینجا دانلود کنید .

volley_file

 

.




    درباره نویسنده

    تیم سامنتا 76 نوشته در سامنتا دارد . مشاهده تمام نوشته های

    دیدگاه ها


    40 پاسخ به “کارگاه آموزشی کتابخانه ی volley در اندروید”

    1. سیدحسین حسینی گفت:

      باسلام و درود

      این آموزش تو محیط بیسک فور اندروید هستش یا ربطی نداره وبا این آموزش میتوان apiاینستاگرام که اطلاعات بهمون میده رو بخونیم

      با تشکر

    2. مریم گفت:

       

      سلام
      ببخشید من یک برنامه نوشتم که یه سری داده ها رو باید از rss یک سایت بگیره و نشون بده و این عملیات گرفتن دیتا در بک گراند و با استفاده از asyntask انجام میشه اما با دیتای گوشی خییییلی کنده
      نمیدونم چیکارش کنم؟
      آیا راهی هست که سرعت asyntask رو زیاد کنم؟
      اگه راهنمایی کنید ممنون میشم

    3. علی110 گفت:

      سلام و خداقوت
      واااقعا ممنون که فایل jar این کتابخونه رو هم قرار دادید، واااقعا دنبالش بودم…
      خدا خیرتون بده.
      یاعلی

    4. محمدی گفت:

      سلام مجدد ، لطفا یک توضیح در مورد امنیت دریافت و ارسال اطلاعات با json هم بدید. مثلا از صفحه json که اطلاعات رو میگیریم چیکار کنیم که اگر کسی اون آدرس رو بزنه نتونه فیلدهارو ببینه و فقط توسط برنامه خودمون قابل دسترسی باشه.
      باتشکر

    5. محمدی گفت:

      با سلام
      من فیلم اموزشی رو خریداری کردم و با موفقیت تونستم انجام بدم فقط اگر آموزشی دارید در مورد اینکه فیلدهای جیسون رو که دریافت میکنیم چطوری به تک تک هر فیلد دسترسی داشته باشم و داخل یک متغیر بتونم ذخیره کنم که ازشون استفاده کنم؟

    6. amin گفت:

      volleyخسته نباشید من دستوراتم خطا نداره وارد متد

      میشه ولی کاری انجام نمیشه حتی خطا

      برای چی هستش ممنون

    7. alireza گفت:

      لطفا دستورات کش تصاویر رو هم توضیح بدین

    8. کیوان گفت:

      با سلام و عرض ادب و تشکر

      بنده این آموزش رو تهیه کردم
      فقط مشکلی داشتم
      در قسمت جیسون ها همونطور که میدونید کل مقدار همراه با کوتیشن ها و آکولاد ها برگشت داده میشه. راهی نیست که فقط اطلاعات نمایش داده بشه؟؟ تشکر

      • سلام با تشکر از خرید شما 

        منظورتون از اینکه اطلاعات نمایش داده بشه رو نفهمیدم ؟ 

        همانطور که خودتان نیز گفتید داده های جیسان با استفاده از آکولادها و کوتیشین ها و … نمایش داده میشه اصل کار جیسان هم همین هست که فرمت مربوط به جیسان رعایت بشه در غیر این صورت باید از روش های دیگر استفاده کنید و جیسان مناسب شما نیست 

        توجه کنید که اگر مایل هستید خروجی شما استاندارد باشه باید قواعد جیسان را رعایت بکنید .

    9. اشکان گفت:

       سلام من این اموزش و خریداری کردم اما لینک دانلود برام ارسال نشد . 

    10. عادل گفت:

      سلام

      فایل جار داخل لینک نیست. لطفا پیگیری کنید. تشکر

      • سلام 

        فایل jar خود گوگل مجدد آپلود شد 

        از اینجا دانلود کنید 

        هر چند استفاده از این روش راحت تر میباشد ولی توصیه میکنم طبق آموزش ویدیویی بالا حتما از طریق gradle و بصورت آنلاین پروژه ی volley را به محیط اندروید استودیو خود اضافه کنید تا از بروزترین نسخه ی استفاده شود و مشکلات دیگری رخ ندهد.

        با تشکر

    11. رضا گفت:

      سلام آقاي نيك زاد

      من اندرويدنويسي مي كنم و با اين كتابخانه هم كار مي كنم و درست هم كار ميكنه

      فقط مي خواهم فايل هم به سرور ارسال كنم ولي هركاري كردم نشد

      اگر ممكن است اين مشكل منو حل كنيد هرچي كه قيمت بدهيد من تقديم مي كنم

      فقط يه تكه كد ارسال فايل با اين كتابخانه و كد بخش سرور كه با php  بايد باشه. خيلي گير كرده ام . كل پروژه ام منتظر اين بخش مي باشد

      لطفا جواب بدهيد 

      r.mizbani@yahoo.com

      ممنون

    12. محمد حسین طاهری گفت:

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

      مخصوص قسمت کدهاش که خیلی کمک کرد 

    13. abbasalim گفت:

      برای حمایت ازتون . لینک این مطلب رو داخل کانال اسفندونه منتشر کردیم.

    14. زهرا گفت:

      سلام سایت آموزشیتون عالیه امیدوارم ادامه داشته باشه

    15. abbasalim گفت:

      سلام مقالتون فوق العاده بود

    16. مجید گفت:

      خیلی ممنون از مقاله ی خوبت

    17. imaN گفت:

      آقا عالی بود واقعا ممنون.

    18. محمدحسین گفت:

      سلام 

      من کد بخش 

      ساخت یک درخواست POST در کتابخانه ی Volley 

      رو کپی کردم تیو یه ONclick listenier

      اما خط اخر کد شما ارور میگیره

      Volley.newRequestQueue(this).add(postRequest);

       

      روی کلمه ی this ارور میده

      اینم عکس ارور

    19. زهرا گفت:

      سلام عالی بود دستتون درد نکنه

    20. majid گفت:

      سلام

      بسیار عالی بود 

      موفق باشید

    پاسخ دهید

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