با پیشرفت روز افزون دنیای برنامه نویسی امکانات بیشتری در اختیار توسعه دهندگان قرار میگیرد که با عنوان کتابخانه یا (Library) میتوانیم در اپلیکیشنهای خود از آنها استفاده کنیم. با ما همراه باشید تا با چند کتابخانه رایج که معمولا در بیشتر پروژههای اندرویدی استفاده میشوند آشنا شویم.
این کتابخانهها برای درخواست دادن (Request) به سرور مورد استفاده قرار میگیرند که معمولا هر درخواست یک پاسخ (Response ) به همراه دارد. کتابخانههایی که در این بخش از برنامه نویسی اندروید استفاده میشوند عبارت اند از:
ما در این مقاله به بررسی Volley و Retrofit میپردازیم.
این کتابخانه که متعلق به شرکت گوگل است سرعت بالا و کارکردی نسبتا ساده دارد. Volley قابلیت cache کردن Requestها را دارد که یکی از دلایل سرعت بالای این کتابخانه محسوب میشود. به کمک Volleyشما میتوانید صفی از درخواستها را ایجاد کرده و همچنین برای آنها قوانین (Policy) تعریف کنید. همچنین این کتابخانه امکان لود تصویر را هم دارد.
این کتابخانه مربوط به شرکت Square است که شرکتی پیشرو در تولید کتابخانه هایی برای Android، C، Go، iOS، Java، JavaScript، Kotlin ،Ruby به شمار میرود. این کتابخانه قدرتمند با استفاده از کتابخانه OkHttp ساخته شده و با کتابخانههای Gson، RxJava سازگار است.
یک نکته مهم: زمانی که به سروری درخواست میدهیم که از https پشتیبانی نکرده و از http استفاده میکند، نتیجه ای برای ما ارسال نمیشود. این اتفاق زمانی که device مورد تست، اندروید API آن بالای 28 باشد نیز میافتد. اگر در LogCat هم دقت کنید با خطای Cleartext HTTP traffic to * not permitted مواجه میشوید.
این مسئله به این دلیل است که تا اندروید API 27 مقدار ویژگی android:usesCleartextTraffic=”true” است ولی برای اندروید API 28 به بالا این مقدار برابر false است. برای اینکه این مشکل را برطرف کنید کافیست در فایل manifest در قسمت application خط android:usesCleartextTraffic=”true” را اضافه کنید.
همانند کد زیر:
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:usesCleartextTraffic="true"
...>
...
</application>
</manifest>
همانطور که میدانید برای Load کردن تصویر از ImageView استفاده میکنیم. اما اگر حجم تصاویر زیاد باشد با خطای جاوایی OutOfMemory مواجه میشویم که بعضی از کتابخانهها تا حد زیادی از این مشکل جلوگیری میکنند.
همچنین بعضی از این کتابخانهها این امکان را فراهم میکنند که تا زمان لود کامل تصویر دریافتی از Url، عکس جایگزینی را نمایش دهند. کتابخانه هایی که در این بخش بررسی میکنیم عبارت اند از: Picasso، Glide، Fresco.
این کتابخانه بسیاری از مشکلات مانند هندل کردن اتوماتیک memory و disk را انجام میدهد. همچنین میتواند با کمترین استفاده از حافظه، اندازه تصویر را تغییر دهد. امکان اضافه کردن Placeholder و همچنین امکان لود کردن تصویر از منابع مختلف را دارد.
این کتابخانه تقریبا مانند کتابخانه Picasso است با این تفاوت که قابلیت نمایش فایلهای Gif را دارد و قابل سفارشی سازی است. بعضی افراد میگویند که کتابخانه Glide از کتابخانه Picasso سریعتر است ولی واقعا به این صورت نیست زیرا Glide زمانی که میخواهد تصاویر را لود کند آنها را فشرده میکند و همین عامل باعث افزایش سرعت آن میشود. البته باید به این نکته توجه داشت که این فشرده سازی بسیار ناچیز است.
این کتابخانه متعلق به شرکت FaceBook است و این شرکت در محصولات خود از کتابخانه Fresco استفاده میکند. همچنین شرکت هایی همانند Twitterو Wikipedia نیز از این کتابخانه استفاده میکنند. این کتابخانه همانند دو کتابخانه بالا است و شاید حتی در قسمت هایی نیز بهتر عمل کرده باشد.
Fresco قابلیت گرد کردن گوشههای یک تصویر را دارد و نکته جالب این است که این کتابخانه، از الگوریتمهای بسیار بهینهای برای گرد کردن تصویر استفاده میکند. این کتابخانه قابلیت استفاده از نسخه اندروید 2.3 (Gingerbread) به بعد را دارد.
ما در این مقاله به بررسی چند کتابخانه پرکاربرد در اندروید پرداختیم که در دو مبحث HttpClient و Load تصویر استفاده میشوند. هر کدام از این کتابخانهها مزایا و معایبی دارند که باید با توجه به نیاز پروژه از آنها استفاده کنیم. معرفی کتابخانههای اندروید ادامه دارد و در مطلبی دیگر، به بررسی چند کتابخانه دیگر نیز خواهیم پرداخت.
سپاس فراوان