آموزش دانلود فایل با قابلیت Pause و Resume در اندروید

امتیاز 4.50 ( 2 رای )

سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش دانلود فایل با قابلیت Pause و Resume در اندروید می پردازیم در این آموزش با استفاده از یک کتاب خانه امکان Pause یا Stop کردن دانلود و همینطور Resume یا ادامه دادن آن را به شما آموزش می دهیم شاید دانلود یک فایل در اندروید در برخی موارد نیازمند هست تا مدت زمانی دانلود ما قطع شود یا سپس دوباره ادامه پیدا کند در ادامه با ما همراه باشید تا نحوه انجام این کار را یاد گیرید.
 
همانطور که در بالا گفتیم ما از یک کتاب خانه برای این منظور استفاده می کنیم نام این کتاب خانه PRDownloader است و به تازگی منشتر شده است.
نکته : (در این آموزش به ذخیره فایل و دسترسی مربوط به فایل نمی پردازیم می توانید از آموزش های سایت برای این منظور استفاده کنید )
خب برویم سراغ کدهای اصلی برنامه ابتدا باید کتاب خانه را به برنامه اضافه کنیم برای اینکار مثل زیر عمل می کنیم.
ابتدا وارد فایل Build.gradle از نوع Module شده سپس خط زیرا به dependencies اضافه کنید.

compile 'com.mindorks.android:prdownloader:0.4.0'

بعد از اینکار پروژه را sync کنید (قند شکن فراموش نشود)
وارد AndroidManifest.xml شده و دسترسی اینترنت را همانند زیر به آن اضافه کنید.

<uses-permission android:name="android.permission.INTERNET" />

برای استفاده از آن باید به Context اکتیویتی را همانند زیر به آن پاس دهید.

PRDownloader.initialize(getApplicationContext());

اگر بخواهید یکسری تنظیمات خاص مثلا تنظیم Timeout هنگام دانلود و تنظیم Tineout هنگام اتصال و در نهایت استفاده از دیتابیس داخلی باید یک Config سفارشی بسازید مثل زیر
فعال کردن دیتابیس داخلی

PRDownloaderConfig config = PRDownloaderConfig.newBuilder()
                .setDatabaseEnabled(true)
                .build();
PRDownloader.initialize(getApplicationContext(), config);

تنظیم Timeout

PRDownloaderConfig config = PRDownloaderConfig.newBuilder()
                .setReadTimeout(30_000)
                .setConnectTimeout(30_000)
                .build();
PRDownloader.initialize(getApplicationContext(), config);

حالا برای اینکه یک Request برای دانلود بفرستید مثل زیر می توان عملکرد.

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) {
                            }
                        });

در بالا یک Constructor وجود دارد که سه ورودی دارد اولی url مربوط به فایل ماست که می خواهیم دانلود شود دومین ورودی مسیر ذخیره سازی فایل است و در آخرین ورودی نام فایل را تغیین می کند.
یکسری method از این کلاس Implement شده است که عبارتند از :

  • setOnStartOrResumeListener : زمانی که دانلود ما resume شود وارد این متد می شود.
  • setOnPauseListener : زمانی که دانلود Stop یا pause شود وارد این متد می شود.
  • setOnCancelListener : زمانی که دانلود Cancel شود وارد این متد می شود.
  • setOnProgressListener : در طول دانلود وارد این متد می شود.
  • onDownloadComplete : زمانی که دانلود به پایان برسد وارد این متد می شود.
  • onError : و در نهایت اگر خطای رخ دهد وارد این متد می شود.

برخی از متدهای کاربردی که مورد استفاده می توانید قرار دهید همانند زیر است.
برای اینکه با کد دانلود را Pause کنید از کد زیر استفاده کنید.

PRDownloader.pause(downloadId);

برای اینکه با استفاده از کد دانلود را Resume کنید از کد زیر استفاده کنید.

PRDownloader.resume(downloadId);

Cancel کردن دانلود با استفاده از کد زیر

PRDownloader.cancel(downloadId);

 
 
این آموزش هم به پایان رسید.
موفق و پیروز باشید.

مطالعه بیشتر