ورود

View Full Version : کمک فوری onProgressUpdate



darkenerboy
سه شنبه 01 مرداد 1392, 14:40 عصر
سلام به همه
ببخشید من یک برنامه نوشتم که توش توی یک AsyncTask دارم یک فایل دانلود میکنم
برای نمایش میزان دانلود از onProgressUpdate استفاده میکنم
توی اندروید 2.2 درست کار میکنه
توی اندروید 4.2.2 خرابه
ورژن های میانی رو هم تست نکردم
ممنون میشم اگه راهنمایی کنین

با تشکر از همه

hamyd_reza
سه شنبه 01 مرداد 1392, 15:25 عصر
----------

shahin bahari
سه شنبه 01 مرداد 1392, 20:31 عصر
سلام
یه نکته ای که توی نسخه های جدید ممکنه پیش بیاد نحوه صدا کردن AsyncTask هستش. تو حالت کلی با متد execute() دستور شروع رو میدیدم اما تو نسخه های جدید به خاطر چند هسته ای بودن پردازنده و ... متد دیگه ای به اسم executeOnExecutor اضافه شده که کارش مثل متد قبلی هست اما مدیریت دیگه ای روی ترد ایجاد میکنه. این متد جدید توی آرگومان اول مشخص میکنه که ترد جدید موازی با ترد اصلی اجرا بشه (AsyncTask.THREAD_POOL_EXECUTOR) و یا به صورت سریال (دستورش رو یادم نیست,از تو خود اکلیپس میتونید چک کنید)
شما این روش رو یه تست کنید شاید مشکلتون حل شد!

darkenerboy
سه شنبه 01 مرداد 1392, 21:50 عصر
با تشکر از هر دوی شما

شما دیگه چرا؟:متعجب: :لبخند: logcat رو بزارید حداقل.
توی log نمایش میده اما پروگرس بروز نمیشه

سلام
یه نکته ای که توی نسخه های جدید ممکنه پیش بیاد نحوه صدا کردن AsyncTask هستش. تو حالت کلی با متد execute() دستور شروع رو میدیدم اما تو نسخه های جدید به خاطر چند هسته ای بودن پردازنده و ... متد دیگه ای به اسم executeOnExecutor اضافه شده که کارش مثل متد قبلی هست اما مدیریت دیگه ای روی ترد ایجاد میکنه. این متد جدید توی آرگومان اول مشخص میکنه که ترد جدید موازی با ترد اصلی اجرا بشه (AsyncTask.THREAD_POOL_EXECUTOR) و یا به صورت سریال (دستورش رو یادم نیست,از تو خود اکلیپس میتونید چک کنید)
شما این روش رو یه تست کنید شاید مشکلتون حل شد!
دقیقا با یک شرت بررسی میکنم اگه ورژن از HONEYCOMB بالاتر باشه با روشی که شما فرمودید AsyncTask رو صدا میزنم.

darkenerboy
سه شنبه 01 مرداد 1392, 22:52 عصر
:تشویق: :تشویق: :تشویق: :تشویق: :تشویق: :تشویق: :تشویق: موفق شدم مشکل رو حل کنم :تشویق: :تشویق: :تشویق: :تشویق: :تشویق: :تشویق: :تشویق:
ببینید محاسبه حجم دانلود شده بر حسب درصد از فرمول زیر بدست میاد
(میزان دانلود شده * 100) / حجم کل فایل
مشکل توی حجم کل فایل بود ! :متفکر:
چون با تابع getContentLength از کلاس HttpURLConnection بدست میاد :اشتباه:
توی نسخه 2.2 حجم صحیح رو بدست میاورد :لبخندساده:
ولی توی نسخه ی 4.2.2 حجم رو نمیتونست بگیره و -1 بر میگردوند (نمیدونم چرا) :ناراحت:
که این -1 محترم محاسبه رو میترکوند :قهقهه:
ولی از قبل من توی برنامه ی سمت سرورم حجم فایل رو توی پایگاه دادم نگه داری میکردم :لبخند:
با گرفتم حجم فایل از سایت و استفاده نکردم از کلاس HttpURLConnection مشکل حل شد :بامزه:

انشاالله مفید بوده باشه :خجالت:
موفق، پیروز و سربلند باشید