در خیلی از پروژه های برنامه نویسی اندروید نیاز داریم تا کاربر بتواند فایل های مختلفی را از طریق اینترنت دانلود کند.
این فایل ها میتواند یک تصویر باشد یا فایل های حجیم چند مگابایتی و به عنوان یک توسعه دهنده وظیفه داریم تا از کارکرد صحیح این عملیات اطمینان حاصل نماییم.
در این آموزش نحوه دانلود فایل با کتابخانه PRDownloader را بررسی میکنیم.
روش های دانلود فایل در برنامه نویسی اندروید
در برنامهنویسی اندروید، روشهای مختلفی برای دانلود اطلاعات و فایلها وجود دارد. در زیر، من چند روش معمول را برای دانلود در برنامههای اندروید شرح میدهم:
- استفاده از کلاس
HttpURLConnection
: این روش از Java Networking API استفاده میکند و به شما اجازه میدهد تا از روشهای HTTP مختلف مانند GET و POST برای ارسال درخواستها به سرور استفاده کنید و پاسخ را دریافت کنید. - استفاده از کتابخانه
Volley
: Volley یک کتابخانه محبوب برای انجام عملیات شبکه در اندروید است. این کتابخانه عملیات دانلود و ارسال درخواستها را به راحتی انجام میدهد و برای دسترسی آسان به پاسخهای سریع و مدیریت درخواستها و پاسخها استفاده میشود. - استفاده از کتابخانه
OkHttp
: OkHttp یک کتابخانه قدرتمند برای ارسال درخواستها و دریافت پاسخهای شبکه است. این کتابخانه امکانات پیشرفتهتری نسبت به HttpURLConnection ارائه میدهد و به شما امکان مدیریت همزمان چندین درخواست را میدهد. - استفاده از کتابخانه
Retrofit
: Retrofit یک کتابخانه بسیار محبوب برای ارسال درخواستهای شبکه است. این کتابخانه برای انجام عملیات RESTful API طراحی شده است و با استفاده از آن میتوانید درخواستهای GET، POST، PUT و DELETE را به سادگی انجام دهید.
در ادامه با کتابخونه ای که معرفی میکنم این کار و با کدنویسی کمتر و امکانات بیشتر انجام خواهید داد.
معرفی کتابخانه PRDownloader
خط زیر و در گریدل پروژه اضافه کنید تا کتابخونه به برنامتون وارد بشه.
همچنین دسترسی اینترنت را فراموش نکنید که در فایل مانیفست اضافه کنید.
implementation 'com.mindorks.android:prdownloader:0.6.0'
برای مقدار دهی اولیه کد زیر را در کلاس اکتیویتی خودتون بنویسید.
PRDownloader.initialize(getApplicationContext());
برای شروع درخواست دانلود هم از کدهای زیر میتونید استفاده کنید.
int downloadId = PRDownloader.download(url, dirPath, fileName) .build() .setOnStartOrResumeListener(new OnStartOrResumeListener() { @Override public void onStartOrResume() { } }) .setOnPauseListener(new OnPauseListener() { @Override public void onPause() { } }) .setOnCancelListener(new OnCancelListener() { @Override public void onCancel() { } }) .setOnProgressListener(new OnProgressListener() { @Override public void onProgress(Progress progress) { } }) .start(new OnDownloadListener() { @Override public void onDownloadComplete() { } @Override public void onError(Error error) { } });
ادامه دانلود و همچنین کنسل کردن را میتوانید از کد زیر بررسی کنید و از متدهایی که در اختیار شماست استفاده کنید.
PRDownloader.resume(downloadId); // Cancel with the download id PRDownloader.cancel(downloadId); // The tag can be set to any request and then can be used to cancel the request PRDownloader.cancel(TAG); // Cancel all the requests PRDownloader.cancelAll();
