جستجو برای:
سبد خرید 0
  • خانه
  • دوره های آموزشی
    • دوره های حضوری و آنلاین
      • دوره جامع برنامه نویسی اندروید
      • دوره جامع برنامه نویسی فلاتر
      • دوره برنامه نویسی React Native
      • دوره آموزشی برنامه نویسی iOS
    • دوره های متخصص و حرفه ای
      • دوره متخصص اندروید (پروژه محور)
      • دوره متخصص فلاتر (پروژه محور)
      • دوره آموزش امنیت در اندروید
      • دوره درآمدزایی دلاری از گوگل پلی در ایران
  • آموزش رایگان
    • دوره رایگان اندروید
    • دوره رایگان فلاتر
  • مشاورهجدید
  • دوره VIP
  • وبلاگ
ورود
[suncode_otp_login_form]
گذرواژه خود را فراموش کرده اید؟
عضویت
[suncode_otp_registration_form]

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

ارسال مجدد کد یکبار مصرف (00:60)
  • 02171058559
  • info@amooznegar.com
  • علاقمندی ها
آکادمی آموزنگار
  • خانه
  • دوره های آموزشی
    • دوره های حضوری و آنلاین
      • دوره جامع برنامه نویسی اندروید
      • دوره جامع برنامه نویسی فلاتر
      • دوره برنامه نویسی React Native
      • دوره آموزشی برنامه نویسی iOS
    • دوره های متخصص و حرفه ای
      • دوره متخصص اندروید (پروژه محور)
      • دوره متخصص فلاتر (پروژه محور)
      • دوره آموزش امنیت در اندروید
      • دوره درآمدزایی دلاری از گوگل پلی در ایران
  • آموزش رایگان
    • دوره رایگان اندروید
    • دوره رایگان فلاتر
  • مشاورهجدید
  • دوره VIP
  • وبلاگ
شروع کنید
آخرین اطلاعیه ها
لطفا برای نمایش اطلاعیه ها وارد شوید
0

وبلاگ

آکادمی آموزنگار > اخبار > برنامه نویسی > اندروید > اصول Coroutines | Coroutines برای تازه کارها

اصول Coroutines | Coroutines برای تازه کارها

1400-07-24
ارسال شده توسط آموزنگار
اندروید
اصول Coroutines

کتابخانه coroutines از جمله کتابخانه های مهم و حرفه ای در زبان برنامه نویسی کاتلین است که باعث می شود دیگه نیاز به استفاده از Thread نباشد و باعث انعطاف پذیر شدن برنامه ها می شود. در این آموزش قصد داریم با کتابخانه coroutines آشنا شده و با مفاهیم کلی آن آشنا شویم.

Coroutine در اندروید

چرا باید از coroutines استفاده کنیم؟

در ابتدا اجازه دهید بررسی کنیم چرا باید نمونه ای (instance) از Thread، را Coroutines قرار دهیم؟ . تفاوت اساسی بین Thread و Coroutines چیست؟ و چرا می خواهیم از instance آن در Thread استفاده کنیم؟

وظیفه coroutine در اندروید

Threadها، هزینه بر هستند (resource intensive).

مشکل اصلی Threadها ، هزینه بر بودن آنهاست. به دلیل اینکه منابع زیادی برای راه اندازی یک Thread ، توقف یک Thread ، هماهنگی بین Threadها و غیره نیاز است. در حالی که Coroutines ، Threadهای بسیار بسیار کم حجم(lightweight) هستند.

Coroutine ها، Thread های کم حجمی هستند

برنامه ای داریم که در آن میلیون ها Coroutines را start می کنیم و هیچ مشکلی در حافظه نداریم ولی اگر سعی کنید که آن برنامه را با هزاران Thread راه اندازی کنید ، برنامه شما از حافظه خارج می شود و از کار می افتد (crash). اما  Coroutineها بسیار کم حجم هستند بنابراین می توانید هر چه قدر دوست دارید بدون هیچ گونه مشکلی وoverhead  ،آنها را start  کنید.

کورتتین در اندروید

ساده سازی کدهای async ، callback و synchronization

در حال حاضر باعث ساده سازی کدهای async می شوند ، بنابراین استفاده از callback و synchronization در Coroutine بسیار آسان است و در واقع آنها برنامه نویسی موازی            (parallel programming) را همانند برنامه نویسی ترتیبی (sequential programming) می کنند.

بنابراین می توانید کد Coroutine را استارت کرده و بلافاصله به متغیرها و متدهای برنامه خود بدون هیچ گونه overhead دسترسی پیدا کنید. و به همین راحتی می توان از Coroutine به برنامه خود callback زده  و همچنین synchronization هم بسیار مفید خواهد بود. فقط شما 2 یا 3 متد دارید که می توانید بدون overhead بین Coroutineها همگام سازی (synchronize) ایجاد کنید.

کتابخانه EventBus در اندروید
خواندن این مقاله
قدرت گرفته از افزونه نوشته‌های مرتبط هوشمند

در جایی که اگر تا به حال با Thread کار کرده باشید می دانید که چه سردردی می تواند ایجاد کند ، به ویژه زمانی که تعداد زیادی از آنها را start می کنید ، همگام سازی بین آنها نیاز خواهد بود.

Coroutine ، syntax پیش پا افتاده ی بسیار ساده ای دارد. بنابراین آنها مفاهیمی (concept) دارندکه بسیار خوب با هم هماهنگ هستند و هنگامی که این مفهوم را درک کردید ، استفاده از آنها برای راه اندازی Coroutine و اجرای موازی کد بسیار آسان است. در حال حاضر آنها می توانندpause  و resume در هر زمان شوند و یک coroutine به یک Thread محدود نخواهد بود.

یک Thread مکانی ساده برای اجرای coroutine است ، اما خود coroutine را می توان در هر زمان متوقف کرد و در هر زمان راه اندازی مجدد کرد.

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

مفاهیم اساسی Coroutine

  • Scope

Scope ، coroutines را ایجاد و اجرا می کند. همچنین رویداد lifecycle را فراهم می کند ، بنابراین مواردی مانند توقف coroutine و لغو coroutine ، توسط یک Scope انجام می شود.

  • Context

در حال حاضر Context مفهومی است که بسیار با scope گره خورده است. بنابراین scope خود Context ای را فراهم می کند و Context صرفاً state (حالت) coroutine است. اساساً ، تعدادی متغیر و تعدادی به صورت functionality ارائه می دهد که می توانید از آنها در coroutine خود استفاده کنید.

  • Suspending functions (تعلیق functionها)
روش صحیح ساخت اسپلش اسکرین در اندروید
خواندن این مقاله
قدرت گرفته از افزونه نوشته‌های مرتبط هوشمند

توابعی هستند که می توانند در coroutine اجرا شوند یا به اصطلاح آنها را معلق کنیم. بنابراین اساساً آنها عملکردی را ارائه می دهند که از آنها برای اجرای موازی استفاده می کنید.

  • Jobs

یک Job اساساً Handle یک coroutine است و می توانید از یک Job برای دسترسی به متدهای چرخه زندگی (LifeCycle) یک coroutine استفاده کنید. خوب وقتی یک coroutine را به روش خاصی ایجاد می کنید در بعدا خواهیم دید که Job ،  coroutine را لغو می کند

  • Deferred

اساساً یک  call teamاست که نتیجه را برمی گرداند ، اما اجرای  coroutineرا به صورت موازی ارسال می کند. نمی توانید بلافاصله نتیجه را برگردانید. فقط زمانی می توان نتیجه را برگرداند که     coroutine  اجرای خود را به پایان رسانده باشد.

بنابراین  ما به Deferred نیاز داریم، که  آینده نتیجه یک coroutine است و اساساً به برنامه بگویید که منتظر نتیجه آن coroutine باشید زمانی که در نقطه ای هستید که به آن نتیجه نیاز دارید .

  • Dispatchers

Dispatcherها تعداد مشخصی از thread ها را مدیریت می کنند و هر زمان که یک coroutine نیاز به اجرا داشته باشد ، آن را به یک thread اختصاص می دهد و به موقع آن thread خاص را اجرا می کند.

Dispatchers در کروتین
  • Error handling (مدیریت خطا)

اساساً راهی برای رسیدگی به هر گونه خطایی که ممکن است در یک coroutine رخ دهد را ارائه می دهد.

نتیجه گیری

بنابراین ، اینها مفاهیم اصلی coroutine هستند. هنگامی که ایده اصلی coroutine را درک کردید. به راحتی می توانید همه این مفاهیم را اجرا کرده و عملکرد(functionality) مورد نیاز خود را به شما ارائه دهیم.

قبلی سوالات مصاحبه برنامه نویس فلاتر
بعدی سوالات مصاحبه استخدامی برنامه نویس اندروید

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
دسته‌ها
  • GoLang
  • jetpack compose
  • PHP
  • اپلیکیشن
  • امنیت
  • اندروید
  • اوپن سورس
  • برنامه نویسی
  • برنامه نویسی iOS
  • برنامه نویسی react native
  • پادکست صوتی
  • تکنولوژی
  • جاوا
  • طراح رابط کاربری
  • طراحی رابط کاربری
  • طراحی وب
  • عمومی
  • فریلنسر
  • فلاتر
  • فناوری
  • کاتلین
  • کتاب های آموزشی
  • کسب و کار
  • لینوکس
  • هوش مصنوعی
  • وردپرس
برچسب‌ها
admob coroutine dagger dagger-hilt jetpack nft rxandroid rxjava spring swift ارز دیجیتال امنیت در اندروید دارت فایربیس فوشیا مصاحبه کاری معماری mvi نقشه راه برنامه نویسی کاتلین گوگل

آکادمی آموزنگار، جایی برای آغاز یک سفر شگفت‌انگیز در دنیای برنامه‌نویسی است. آموزنگار تلاش می‌کند تا هر فردی را از هر سطحی از زندگی و تجربه به دنیای جذاب برنامه‌نویسی وارد کند.

دسترسی سریع
  • درباره ما
  • تماس با ما
  • حریم خصوصی
  • سوالات متداول
نمادها
شبکه های اجتماعی
Facebook Twitter Youtube icon--white Whatsapp

تهران، ازگل ، مجتمع تجاری الماس ایرانیان، پارک علم و فناوری فردا

021-71058559

تمامی حقوق برای آکادمی آموزنگار محفوظ می باشد

ورود
با شماره موبایل
با آدرس ایمیل
آیا هنوز عضو نشده اید؟ اکنون ثبت نام کنید
بازنشانی رمزعبور
با شماره موبایل
با آدرس ایمیل
ثبت نام
با شماره موبایل
با آدرس ایمیل
قبلا عضو شده اید؟ اکنون وارد شوید
محافظت شده توسط