آموزش AsyncTask در اندروید

منتشرشده توسط حامد قنبری در تاریخ

Android AsyncTask کلاس انتزاعی ارائه شده توسط آندروید است که آزادی  بیشتری را برای انجام وظایف سنگین در پس زمینه و نگه داشتن رابط UI بدون تداخل موضوعی با  آن فراهم می کند چرا که این تداخل موضوعی موجب خطای برنامه خواهد شد.

همانطور که می دانیم برنامه آندروید در ترد اصلی و در یک موضوع واحد راه اندازی می شود. با توجه به این مدل تک بعدی ، عملیات هایی  که زمانبر بوده و موجب سلب اجرای ترد اصلی می شود برای برنامه مشکل ساز خواهند بود برای جلوگیری از این وضعیت، ما در اندروید از AsyncTask برای انجام وظایف سنگین در پس زمینه در یک موضوع اختصاصی و انتقال نتایج به موضوع UI استفاده می کنیم. از این رو استفاده از AsyncTask در برنامه آندروید رابط کاربری UI را به طور مداوم پاسخگو می کند.

متدهای  اساسی مورد استفاده در کلاس AsyncTask اندروید در زیر تعریف شده است:

()doInBackground : این روش حاوی کدی است که باید در پس زمینه اجرا شود. در این روش ما می توانیم نتایج را چند بار به موضوع UI با روش() publishProgress  ارسال کنیم. برای اطلاع از اینکه پردازش پس زمینه تکمیل شده است، فقط باید از  return statements  استفاده کنیم

()onPreExecute این روش حاوی کد ای است که قبل از شروع پردازش در پس زمینه اجرا می شود

()onPostExecute این متد پس از انجام متد doInBackground فراخوانی می شود. نتیجه از doInBackground به این متد منتقل می شود

()onProgressUpdate این متد به روز رسانی های پیشرفت از متد doInBackground  را دریافت می کند و از طریق روش publishProgress منتشر می شود و از  این متد می توان برای به روز رسانی رشته ی UI استفاده کرد.

به منظور درک بهتر موضوع مثالی را برایتان آماده کرده ایم:

اگر در داخل برنامه اکلیپس یا اندروید استودیو قرار دارید پروژه جدیدی را  ایجاد کنید

اکلیپس :File ⇒ New Android ⇒ Application Project

اندروید استودیو :File ⇒ New  ⇒ New Project

اما اگر هنوز برنامه خود را باز نکرده اید یکی از برنامه های فوق را باز نموده و بعد از تعیین مشخصات(نامگذاری) ، تعیین حداقل sdk  و نوع اکتیویتی (blank  یا Empty) ، نام اکتیویتی ابتدایی و اصلی خود  را همان MainActivity قرار دهید. بعد از لود کامل برنامه ، در مسیر res ⇒layout لایه متناظر اکتیوتی اصلی یعنی activity_main را پیدا نمود و کدهای مندرج و پیش فرض آن را پاک کرده و کدهای xml  زیر را به آن اضافه کنید:

 

 

 


0 دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

-- بارگیری کد امنیتی --