مقالات آموزشی

منظور از ui thread یا main thread چیست و بررسی دلایل اهمیت آن

مفید بود؟

آیا میدانید منظور از ui thread یا main thread چیست و دلایل اهمیت آن چه مواردی می‌باشد؟ ما در این مقاله برای پاسخ به این سوال، به بررسی ui thread یا main thread در اپلیکیشن‏های موبایل می‌پردازیم.

منظور از ui thread یا main thread چیست و دلایل اهمیت آن چه مواردی می‌باشد؟

ui thread یا thread main برای راه اندازی اپلیکیشن‏ها کاربرد دارند. همه اجزای برنامه شما (فعالیت‌ها، سرویس‌ها، ارائه دهندگان محتوا، گیرنده های توزیع) در این thread ها ساخته می‌شوند و تمام فراخوانی‌های سیستم برای اجزای اپلیکیشن در این thread انجام می‌شود.منظو منظور از ui thread یا main thread چیست و دلایل اهمیت آن چه مواردی می‌باشد؟ تفاوت ui thread و thread main

main thread چیست 

برای پاسخ به این سؤال که منظور از ui thread یا main thread چیست و دلایل اهمیت آن چه مواردی می‌باشد؟ باید ابتدا با مفهوم thread آشنا شوید. توسعه دهندگان اپلیکیشن‏های موبایل اساساً از thread ها استفاده می‌کنند تا عملکرد و قابلیت استفاده از آن‌ها را برای کاربران بهبود بخشند. thread ها با تغییر پردازشگر یا ارائه منابع در thread ها، به اپلیکیشن اجازه می‌دهند تا زمانی که وظایف فشرده پردازشگر به پایان می‌رسد، به کار خود ادامه دهد.

 نحوه کار با اپلیکیشن

شما می‌توانید برای انجام برخی از کارهای غیرضروری اپلیکیشن در بک‌گراند از thread ها استفاده کنید تا یک اپلیکیشن را با کارایی بالاتر ایجاد کنید. با افزایش کارایی اپلیکیشن کاربران می‌توانند با کمترین وقفه با رابط کاربری تعامل داشته باشند؛ بنابراین نحوه کار با اپلیکیشن را به راحتی درک خواهند کرد.اکنون که با مفهوم thread ها آشنا شدید، برای اینکه بدانید که منظور از ui thread یا main thread چیست و دلایل اهمیت آن چه مواردی می‌باشد؟ باید تفاوت‌های ui thread و main thread را درک کنید.

ui thread 

ui thread، thread پایه برای اجرای اپلیکیشن‏ها است؛ بنابراین اکثر کدهای مرتبط با اپلیکیشن در آن قابل اجرا می‌باشد.به عنوان مثال اگر اپلیکیشن شما فقط با یک activity ساخته شده باشد تمام شیوه های چرخه عمر و اکثر کدهای مدیریت رویدادها برای اپلیکیشن در ui thread پیاده سازی می‌شوند. برخی از این شیوه ها عبارتند از onclick، ondestroy، onpause، oncreate.

انتقال وظایف از thread

به طور کلی می‌توان گفت هر یک از اپلیکیشن‏ها دارای thread های ویژه ای برای object های رابط کاربری هستند، مثل view. به چنین thread هایی، ui thread گفته می‌شود. نکته ای که باید به آن توجه کنید این است object های موجود در thread ui امکان دسترسی به سایر object ها را در همان thread می‌دهند؛ بنابراین برای انتقال وظایف از thread های بک‌گراند به thread ui نیاز به یک هندلر دارید تا وظایف در آن اجرا شود.

 رابط کاربری در thread

از طرف دیگر به روز رسانی تمام اجزای مربوط به رابط کاربری در این thread انجام می‌شود. در واقع به روز رسانی و تغییر در رویدادهای رابط کاربری از طریق ui thread اجرا می‌شود.اگر بخواهیم ui thread را از بعد دیگری بررسی کنیم، باید بگوییم که با thread رابط کاربری می‌توانید وظایف خود را در thread بک‌گراند اجرا کنید و نتیجه کار را در ui thread نمایش دهید.

 بررسی thread main

وقتی شما یک thread جدید را برای اجرای وظایف در بک‌گراند ایجاد می‌کنید، کدهای این وظایف در ui thread پیاده سازی نمی‌شوند. در این حالت این سؤال مطرح می‌شود که اگر لازم باشد وظایف پس‌زمینه روی ui تغییراتی ایجاد کنند، دسترسی به ui thread چگونه امکان‌پذیر است؟ در این شرایط می‌توان از runon ui thread به عنوان ui thread استفاده کرد.در ادامه این بخش برای اینکه به طور دقیق‌تر به سؤال منظور از ui thread یا main thread چیست و دلایل اهمیت آن چه مواردی می‌باشد؟ پاسخ دهیم به بررسی thread main می‌پردازیم.

 اجرای یک اپلیکیشن در اندروید

در هنگام اجرای یک اپلیکیشن در اندروید، سیستم یک thread را ایجاد می‌کند تا به طور پیش‌فرض همه اجزای اپلیکیشن در آن پیاده سازی شوند. این thread، main thread نامیده می‌شود. main thread وظیفه دارد به طور مناسب رویدادها را بین اجزای رابط کاربری توزیع کند.

همچنین از طریق android ui toolkkit بین اجزای اپلیکیشن ارتباط برقرار می‌کند. در واقع main thread با توجه به رویدادهای موجود در رابط کاربری، رویداد مناسب را پخش می‌کند و اگر کاربر با انتخاب یک رویداد خاص نیاز به اجرای یک بخش دیگر دارد، thread اصلی این کار را انجام می‌دهد.

اجزای یک اپلیکیشن در main thread 

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

 application is unresposive

ازجمله وظایف و فعالیت‌هایی که نباید روی main thread پیاده سازی شوند می‌توان به انتقال درخواست برای شبکه و آن دسته از اجزای اپلیکیشن که دارای حجم زیادی هستند، اشاره کرد. اگر بخواهید چنین عملیات یا وظایفی را روی main thread پیاده سازی کنید، آن‌ها به طور همزمان اجرا می‌شوند.

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

قابلیت‌هایی در اندروید

بنابراین در چنین مواردی از thread های جداگانه ای استفاده می‌شود تا وظایف و فعالیت‌ها، بدون تأثیرگذاری روی ui اپلیکیشن، به کار خود ادامه دهند. در این حالت وظایف و فعالیت‌ها به طور غیرهمزمان اجرا می‌شوند.

با توجه به اینکه نباید از ui thread برای اجرای فعالیت‌های حجیم و طولانی استفاده کرد؛ قابلیت‌هایی در اندروید وجود دارد که برای multi-threading کاربرد دارند. این قابلیت‌ها در قالب کلاس‌هایی هستند که ساخت و استفاده از چند thread جداگانه را امکان‌پذیر می‌سازند و به شما در مدیریت آن‌ها کمک می‌کنند. شما می‌توانید هر یک از این کلاس‌ها را بر اساس نیاز و هدفی که دارید، انتخاب کرده و از آن‌ها استفاده کنید:

  • کلاس asynctask: برای ارسال وظایف از ui thread به سایر thread ها و برعکس کاربرد دارد.
  •  کلاس handler task: یک thread را برای callback ها ایجاد می‌کند.
  •  کلاس threatpoolexecuter: امکان پیاده سازی چندین وظیفه را به طور موازی فراهم می‌کند.
  • کلاس intentservice: intent را به خارج از ui thread هدایت می‌کند.
  • What is main thread and background thread in Android?

     

شناخت تفاوت‌های ui thread و thread main 

در پایان امیدواریم هستیم با شناخت تفاوت‌های ui thread و thread main به پاسخ نهایی سؤال منظور از ui thread یا main thread چیست و دلایل اهمیت آن چه مواردی می‌باشد؟ رسیده باشید و با تفاوت‌های آن‌ها آشنا شده باشید.

Author

مدیریت سایت

Leave a comment

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