آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

Puse و resume دانلود در پروژه مارکت 

غزل  11 سال پیش  11 سال پیش
+2 0

سلام دوستان در پروژه مارکت میخوام puse و resume رو به قسمت دانلود کردن اضافه کنم ممنون میشم راهنمایی کنید. 

 

0 0
کسی نیست یه راهنمایی کوچیک کنه (11 سال پیش)
0 0
!!!؟؟؟ (11 سال پیش)
0 0
آخه سوال خیلی کلی و مبهمه. 1- "کاربر از نصب پشیمون شد لغوش کنه" یعنی در حین نصب و یا بعد از نصب؟ 2- "بعد لغو دوباره نصب رو بزنه و دانلود رو ادامه بده" بالاخره دانلود کرده و داره نصب می کنه یا فقط داره دانلود می کنه؟ 3- کد تغییر عنوان دکمه یا کل این ماجرا؟ (11 سال پیش)
0 0
ببینید دقیقا عین برنامه بازار که یک اپلیکیشن رو دانلود میکنیم وسط دانلود، دانلود رو کنسل میکنیم و بعد مجدد میخوایم دانلود رو ادامه بدیم. مشکل من نگه داشتن و ادامه دادن دانلود است (11 سال پیش)
0 0
(11 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
پاشا  11 سال پیش
+2 0

آها.

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);
}
...
0 0
ممنون از راهنماییتون اما هرکاری کردم نتونستم دانلودمو puse/resume کنم یه دکمه کنسل اضافه کردم که کلا دانلود رو کنسل کنه این کار فکر کنم راحت تر باشه اگه ممکنه راهنمایی کنید چطور دانلود رو با زدن دکمه کنسل کنسلش کنم؟ (11 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .