شروع 01 اولین قدم خیلی مهمه، خیلیا به خاطر ترس از شکست شروع نمیکنن
پس ترس رو بزار کنار و شروع کن
فقط شروع کن
تمرین و تکرار 02 خیلیا وارد حوزه برنامه نویسی میشن و به خاطر سختی هاش سریع جا میزنن و عقب میکشن
پس اگه میخوای موفق بشی فقط و فقط تمرین کن و پشتکار داشته باش
پشتکار
حرف اول و آخر رو میزنه
موفقیت 03 زمانی میتونی به این مرحله برسی که واقعا تلاش کرده باشی. برنامه نویسی واقعا راحت نیستش
اگه خوب تلاش کنی، مطمئن باش نتیجه زحماتت رو خیلی خوب دریافت میکنی
موفقیت رو باید به دست بیاری

وبلاگ

برنامه نویسی ناهمزمانی در اندروید (مفهوم Thread)

برنامه نویسی ناهمزمانی در اندروید (مفهوم Thread)
اندروید

برنامه نویسی ناهمزمانی در اندروید (مفهوم Thread)

برنامه نویسی ناهمزمانی راستش یه موضوع خیلی خیلی مهمیه.

به کمک این روش برنامه تون دیگه برای عملیات های مختلف منتظر اتمام کار قبلی نمیمونه، پس کاربر خیلی راحت میتونه از همه بخش های برنامه شما استفاده کنه.

بزارید یک مثالی رو بزنم، فرض کنید که از اینترنت باید یه فایلی رو دانلود کنید!

اگه به صورت ناهمزمانی کار نکنید کاربر مجبوره که با برنامه شما هیچ کاری رو انجام نده تا زمانی که اول عملیات دانلود تموم بشه!

پس ما میخوایم طوری برنامه بسازیم که کاربر بتونه هم عملیات دانلود رو داشته باشه و هم بتونه با بخش های دیگه هم کار کنه!

حالا شاید پیشه خودت بگی خب اینکه میشه همزمان، چرا بهش میگن ناهمزمان!😀

توی این پس میخوام به صورت کلی این مفهوم رو توضیح بدم، توی پست های آینده ساختارش رو هم توضیح میدم.

ببینید ما یه thread اصلی داریم که هر برنامه ای که اجرا میکنیم میاد داخل این بخش و شروع به کار میکنه.

شما میدونید که برنامه های جاوا و کاتلین پس از کامپایل شدن و تبدیل شدن به بایت کد، توسط گوشی کاربر تفسیر میشن.

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

کاربر روی یک دکمه در برنامه شما کلیک میکنه که اون دکمه مسئول دانلود یه فیلم هست.

حالا اگر شما کاربر رو مجبور کنید که تا پایان دانلود فیلم هیچ کاری نکنه که به شدت تجربه کاربری اپ خودتونو پایین میارید.

اینجاست که از thread های دیگه استفاده میکنید.

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

به عکس زیر خوب توجه کن، مفهوم برنامه نویسی ناهمزمانی رو میتونی خوب متوجه بشی

برنامه نویسی ناهمزمانی در اندروید (مفهوم Thread)
برنامه نویسی ناهمزمانی در اندروید

خوب شاید با خودتون بگین هر کاری که قراره انجام بدیم رو بفرستیم به thread دیگه ای تا سرعت اپ بالا بره اما باید بدونید که اولا مدیریت کردن thread ها کار آنچنان ساده ای نیست.

همین الان هم از کتابخونه هایی نظیر رتروفیت و آر ایکس برای انجام کار های مختلف در thread های مختلف استفاده میکنیم و ثانیا برخی از کار ها رو شما باید در thread اصلی انجام بدین.

چه کاری ؟ هر کد اندرویدی رو شما باید داخل thread اصلی استفاده کنید در غیر این صورت برنامه کرش میکنه.

مثلا اگر شما در thread بکگراند یه رشته ای رو از اینترنت گرفتید، حالا اگر بخواین اون رشته رو Toast کنید ، با توجه به اینکه Toast یک کد اندرویدی محسوب میشه ، باید به thread اصلی برگردید وگرنه برنامه کرش میکنه.

به طور کلی میتونیم بگیم thread ها برای انجام کار های زمان بر مورد استفاده قرار میگیرن تا از قفل شدن UI و در واقع هنگ کردن برنامه از نگاه کاربر جلوگیری کنیم.

و اما برنامه نویسی نا همزمان چیه؟

یعنی به مفهوم اینکه ما یه قطعه کد سنگین رو برای اجرا شدن به thread دیگری بفرستیم تا از قفل کردن UI جلوگیری کنیم.

در عین حالی که برنامه داره فیلم دانلود میکنه، کاربر بتونه با برنامه تعامل داشته باشه و حس نکنه که برنامه هنگ کرده.

اینکه برنامه ما در آن واحد هم دانلود میکرده باشه و هم قابل تعامل باشه که مفهوم همزمان بودن رو میرسونه، یعنی چند تا کار دارن همزمان انجام میشن؛ پس چرا میگن برنامه نویسی نا همزمان؟

دلیلش اینه که اونایی که این اسم رو گذاشتن از یه جنبه دیگه به قضیه نگاه کردن. چه جنبه ای؟

ببینید وقتی شما برای اون قطعه کد سنگینی که دارید ( همون دانلود فیلم ) ، از یک thread دیگه استفاده نکنید،

باعث میشه که thread اصلی قفل کنه و منتظر پاسخ اون قطعه کد بمونه که بهش میگن برنامه نویسی همزمان؛ یعنی در همین زمان باید پاسخ اون قطعه کد داده بشه تا برنامه بره سراغ سایر بخش ها.

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

پس بدین دلیل به این روش میگن برنامه نویسی ناهمزمان.

دیدگاه خود را به ما بگویید

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

2 × چهار =

فیلدهای دلخواه برای نمایش را انتخاب کنید. سایر فیلدها مخفی می شود. برای ترتیب دلخواه فیلدها را به محل دلخواه بکشید و رها کنید.
  • Image
  • SKU
  • Rating
  • Price
  • Stock
  • Availability
  • Add to cart
  • Description
  • Content
  • Weight
  • Dimensions
  • Additional information
  • Attributes
  • Custom attributes
  • Custom fields
مقایسه
علاقمندی ها 0