۲

GPS چیست و چگونه کار می کند ؟

جی پی اس چیست و چگونه کار می کند ؟ جی‌پی‌اس یا سیستم موقعیت‌یاب جهانی (Global Positioning Systems)، یک سیستم راهبری و مسیریابی ماهواره‌ای است که از شبکه‌ای با حداقل ۲۴ ماهواره تشکیل شده است. این ماهواره‌ها به سفارش وزارت دفاع ایالات متحده ساخته و در مدار ...

۶

آشنایی با API و کاربرد آن در برنامه نویسی

در صورتی که اندکی با برنامه نویسی آشنایی داشته باشید و یا حوزه فعالیت شما در زمینه تکنولوژی اطلاعات باشد حتما تا کنون واژه وب سرویس یا API را شنیده اید و برایتان سوال بوده است که وب سرویس چیست و چه کاربردی دارید؟ وب سرویس (API)  وب سرویس را به زبان سا ...

۳

آشنایی با فریم ورک لاراول(Laravel)

فریم ورک های ارائه شده در زبان های برنامه نویسی همواره سرعت بسیار بالایی به برنامه نویسی بخشیده است. آسودگی در کد نویسی، محیط های متفاوت، امنیت بالا و امکانات بسیار زیادی که باعث میگردد برنامه نویسان تمامی زبان های برنامه نویسی ترغیب بیشتری به استفاده از ...

۱

NET CORE. یا دات نت کور چیست؟

بسیاری از برنامه نویسان قدیمی و افرادی که علاقه زیادی به مایکروسافت و برنامه های انحصار طلب مایکروسافت نداشتند اصلی ترین علت را انحصار طلبی و عدم توانایی اجرا در سایر پلتفرم ها مطرح مینمودند. مایکروسافت در چند سال اخیر به لزوم اوپن سورس، چند پلتفرم بودن پ ...

۴

فناوری اطلاعات

فناوری اطلاعات به معنی و مفهوم بسیار ساده یعنی علم استفاده از یک سری ابزار که این ابزار همان پردازش، نگهداری، جمع آوری، ذخیره، توزیع، انتقال، امنیت است که بر روی اطلاعات اعمال میشود. این تعریف برای کسانی که بخواهد با فناوری اطلاعات IT آشنا شوند؛ تعریفی من ...

۲٫۰

باارزش ترین برندهای جهان در سال ۲۰۱۸

موسسه برند فاینانس (Brand Finance)، رده‌بندی باارزش ترین برندهای جهان در سال ۲۰۱۸ را منتشر کرد که بر اساس آن، غول‌های دنیای تکنولوژی در صدر قرار دارند. در ادامه، ۱۰ برند با ارزش دنیا را معرفی می‌کنیم. رده‌بندی باارزش ترین برندهای جهان در سال ۲۰۱۸ میلاد ...

۱

معرفی enum در زبان برنامه نویسی جاوا

همان طور که پیش از این توضیح داده شد، متغیری از جنس boolean زمانی مورد استفاده قرار می گیرد که دو حالت بیشتر پیش روی ما وجود نداشته باشد. حال اگر ما در شرایطی قرار بگیریم که بیش از دو حالت پیش روی ما باشد مسلماً از این نوع متغیر نخواهیم توانست استفاده کنی ...

۳

AsyncTask در اندروید چیست؟

ترد اصلی UI اندروید

اندروید رخدادهای ورودی یا تسک‌ها را در یک تک ترد (Thread) رابط کاربری (UI) مدیریت می‌کند که به این ترد، ترد اصلی (Main Thread) گفته می‌شود. ترد اصلی نمی‌تواند چند عملیات همزمان را مدیریت کند و فقط یک رخداد را در هر لحظه پردازش می‌کند.

پردازش همزمان در اندروید

اگر رخدادها ورودی یا تسک‌ها به صورت همزمان اجرا نمی‌شوند تمام کدهای یک اپلیکیشن اندروید روی ترد اصلی خواهد بود و هر خط کد یکی پس از دیگری اجرا خواهد شد. فرض کنید شما یک عملیات طولانی مدت را انجام می‌دهید، برای مثال دسترسی پیدا کردن به منابعی از طریق اینترنت (مثل عکس، MP3 یا JSON). در این‌صورت تا هنگامی که عملیات مورد نظر انجام نشود اپلیکیشن از کار خواهد افتاد. برای داشتن یک تجربه کاربری خوب در اپلیکیشن‌های اندروید، تمام تسک‌ها یا عملیاتی که بالقوه هستند باید به صورت ناهمگام(asynchronous) اجرا شوند. چند مثال از تسک‌های زمان‌بر:
  1. دسترسی به منابع از طریق اینترنت
  2. عملیات روی دیتابیس
  3. فراخوانی‌های وب‌سرویس
  4. منطق پیچیده که زمان زیادی برای اجرا می‌خواهد
  • AsyncTask در اندروید

AsyncTask چیست؟

AsyncTask یک کلاس انتزاعی اندروید است که به اپلیکیشن‌های اندروید کمک می‌کند تا ترد اصلی UI را به صورت مؤثر مدیریت کنند. کلاس AsyncTask به ما امکان می‌دهد تا تسک‌های زمان‌بر را اجرا کرده و حاصل را روی ترد اصلی بدون تأثیر گذاشتن روی آن نمایش دهیم.

چه‌موقع از AsyncTask استفاده کنیم؟

فرض کنیم شما یک اپلیکیشن ساده ساخته‌اید که یک فایل MP3 را هنگام اجرای برنامه از اینترنت دانلود می‌کند. نمودار وضعیت زیر مجموعه عملیاتی را نشان می‌دهد که وقتی اپلیکیشنتان را اجرا می‌کنید اتفاق می‌افتند.
همچنان‌که دانلود فایل از سرور در حال انجام است، اپلیکیشن غیر قابل استفاده می‌شود تا زمانی که ترد اصلی منتظر اتمام عملیات دانلود است. برای مواجه با این‌گونه مشکلات می‌توانیم یک ترد جدید بسازیم و متد run آن را بگونه تغییر دهیم که این فراخوانی شبکه را اجرا کند دقیقاً شبیه کاری که معمولاً در برنامه‌های عادی جاوا انجام می‌دهیم. درنتیجه UI پاسخگو باقی می‌ماند. به‌ این علت که toolkit رابط کاربری اندروید thread safe نیست، پیاده‌سازی این مسأله با چند ترد ممکن است خود مشکلات اضافی جدیدی را وقتی سعی کنیم UI را طبق نتایجی که از اجرای عملیات دانلود بدست می‌آید آپدیت کنیم، ایجاد کند. اندروید تمام این مشکلات را درنظر داشته و کلاس اختصاصی‌ای را به نام «‌AsyncTask» ساخته تا تسک‌ها و عملیاتی را که نیاز است در پس‌زمینه به صورت ناهمگام اجرا شوند، مدیریت کند.
نکته : AsyncTask فقط باید برای تسک‌های استفاده شود که تنها چند ثانیه طول می‌کشند، بعضی تسک‌ها ممکن است ترد را برای مدت زیادی در حال اجرا نگه‌دارند در این صورت این تسک‌ها باید به‌وسیله پکیج «java.util.concurrent» مدیریت شوند.

چگونه AsyncTask پیاده‌سازی می‌شود؟

۱ داخل یک کلاس Activity یک زیرکلاس بسازید و آن را از کلاس AsyncTask مشتق کنید همانگونه که در زیر نشان داده شده:
{
{

۲ بسادگی تسک را با فراخوانی متد execute اجرا کنید:

چهار مرحله AsyncTask

وقتی یک تسک ناهمگام از ترد اصلی UI اجرا می‌شود از چهار مرحله می‌گذرد:

  • onPreExecute :

قبل از اجرای تسک فراخوانی می‌شود، در تئوری قبل از اینکه متد «doInBackground» روی تردUI فراخوانی شود.این متد اغلب برای آماده‌سازی اجرای تسک استفاده می‌شود (مثل نمایش نوار پیشرفت در رابط کاربری)

  • doInBackground:

کدهایی که اجرای آن‌ها زمان‌بر است باید در این متد نوشته شوندوقتی متد execute در ترد اصلی UI فراخوانی شد این متد با پارامترهایی که به آن ارسال شده اجرا می‌شود.

  • onProgressUpdate:

متدdoInBackground در هرلحظه با فرخوانی «publishProgress» این متد را اجرا می‌کنداین متد می‌تواند برای نمایش پیشرفت کار به هر صورت، در رابط کاربر استفاده شود.

  • onPostExecute:

وقتی پردازش محاسبات پس‌زمینه در متد «doInBackground» پایان یافت فراخوانی می‌شودنتایج«doInBackground» به این متد فرستاده می‌شوند.

  • کنسل کردن تسک

تسک می‌تواند با فراخوانی متد cancel(boolean) کنسل شوداجرای این متد باعث فراخوانی‌های بعدیisCancelled() خواهد شد تا پاسخش true شودبعد از اجرای این متد به جای متد onPostExecute() متدonCancelled(Object) فراخوانی می‌گردد.

AsyncTask – قوانینی که باید دنبال شوند

  1. کلاس AsyncTask باید در ترد UI بارگذاری شود.
  2. نمونه تسک باید در ترد UI ساخته شود.
  3. متد «execute(Params…)» باید در ترد UI فراخوانی شود.
  4. متدهای onPreExecute(), onPostExecute(Result), doInBackground(Params…), onProgressUpdate(Progress…) نباید به صورت دستی فراخوانی شوند.
  5. هر تسک فقط می‌تواند یک بار اجرا شود(اگر تلاش برای اجرای دوباره یک تسک صورت گیرد یک exception ارسال خواهد شد)
...
۷

از مقایسه JSON و XML دست بردارید

JSON یا XML؟ کدامیک بهتر است؟ کدامیک سریع‌تر است؟ کدامیک را باید در پروژه استفاده کنم؟ بس کنید! JSON و XML قابل مقایسه نیستند. مثل این است که یک دوچرخه را با BMW مقایسه کنید. واقعا کدامیک بهتر است؟ در بعضی از شرایط یک دوچرخه خیلی بهتر عمل خواهد کرد. ام ...

۶

بیوگرافی آلن تورینگ، پدر علم کامپیوتر

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