Puse و resume دانلود در پروژه مارکت
سلام دوستان در پروژه مارکت میخوام puse و resume رو به قسمت دانلود کردن اضافه کنم ممنون میشم راهنمایی کنید.
آها.
1- دانلودی که STOP بشه دیگه نمیشه کاریش کرد (در واقع cancel شده)، ولی دانلودی که PAUSE بشه رو میشه از ادامه RESUME کرد.
2- قبل از هر چیز، شما باید مفهوم Pause و Resume شدن دیتای در حال انتقال رو درک کنی: Pause یعنی متوقف کردن موقتی reading فایل و بعد ذخیره فایل stream شده در حافظه. Resume یعنی شروع reading فایل از محل باقیمانده و ذخیره اون در ادامه فایل ذخیره شده.
3- سروری که ازش فایل دانلود میشه، باید HTTP/1.1 رو پشتیبانی کنه.
4- برای چک کردن سرور، اینکه HTTP 1.1 رو پشتیبانی می کنه یا نه، باید درخواست اطلاعات بکنی ازش و در پاسخش متوجه بشی.
5- باید Timeout رو هم هندل کنی که مثلاً اگر دانلود تا 1 دقیقه PAUSE موند، بعدش Stop و اتصال close بشه.
6- چون نمی دونم شما کدتو چطوری نوشتی، پس اینجا قسمت های مهم رو میزارم تا متوجه داستان بشی:
اون ... ها یعنی مابین خطوط کدهای دیگه ای هم باید باشه.
...
File file = new File(DESTINATION_PATH);
...
if(myDownloadingFile.exists())
{
myDownloadedLenght = (int) myDownloadingFile.length();
// String lastModified = myConnection.getHeaderField("Last-Modified");
myConnection.setRequestProperty("Range", "bytes=" + (myDownloadingFile.length()) + "-");// or
lastModified
}
else
{
myConnection.setRequestProperty("Range", "bytes=" + myDownloadedLenght + "-");
}
...
myProgressBar.setMax(myConnection.getContentLength());
...
myFOS = (myDownloadedLenght == 0) ? new FileOutputStream(myDownloadingFile): new FileOutputStream(myDownloadingFile, true);
...
myBOS = new BufferedOutputStream(myFOS, 1024);
...
int myCurrentProgress = 0;
while ((count = input.read(myData, 0, 1024)) != -1 && myCurrentProgress != 100)
{
myDownloadedSize += count;
output.write(myData, 0, count);
myCurrentProgress = (int) ((myDownloadedSize * 100) / myDownloadedLenght);
...
myProgressBar.setProgress(myCurrentProgress);
}
...
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .