تردها در اندروید

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

آندروید تمام عملیات UI و حوادث ورودی را از یک موضوع واحد که به عنوان Main یا UI خوانده می شود، مدیریت می کند. آندروید همه رویدادهای این موضوع را در یک صف جمع می کند و این صف را با یک نمونه از کلاس Looper پردازش می کند.

آندروید با پشتیبانی از کلاس Thread برای پردازش ناهمزمان  بسته های java.util.concurrent را برای انجام کارهای پس زمینه مانند استفاده از کلاس های ThreadPool و Executor تامین می کند.

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

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

چرا هندلر؟

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

یک Handler اجازه ارتباط با موضوع UI را از موضوع دیگر می دهد. چرا که آندروید اجازه نمی دهد که موضوعات دیگر به طور مستقیم با موضوع UI ارتباط برقرار کنند.


0 دیدگاه

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

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

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