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

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

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

وبلاگ

آکادمی آموزنگار > اخبار > برنامه نویسی > اندروید > Coroutine Scope در کاتلین | Coroutine Context

Coroutine Scope در کاتلین | Coroutine Context

1403-02-08
ارسال شده توسط آموزنگار
اندروید
Coroutine Scope در کاتلین

در آموزش قبلی به آموزش ابتدایی coroutines در کاتلین پرداختیم و در این جلسه قصد داریم به مبجث Scope در coroutines بپردازیم. تا از کاربردهای Scope ها در coroutines آشنا شویم.

اصول اولیه Coroutines

Scope چیست؟

Scope به سادگی متدهای چرخه حیات (lifecycle) را برای coroutine ارائه می دهد و به ما اجازه می دهد تا   coroutine ها را برای شروع و توقف آنها مدیریت کنیم.

Scope در coroutine

GlobalScope.launch { }

در حال حاضر هنگامی که کد کلمه hello را در مقاله قبلی خود run کنیم ، GlobalScope را مشاهده کرده ایم. بنابراین GlobalScope ، به سادگی به این معنی است که Scope این coroutine ، کل برنامه است. در این صورت تمام نمی شود ، اگر در پس زمینه اجرا شود همچنین متوقف نمی شود مگر اینکه کل برنامه متوقف شود.

نکته ای که باید در نظر گرفت این است که scope بسیار بزرگی است و معمولاً استفاده نمی شود. ما از آن در برنامه HelloWord استفاده کردیم زیرا بسیار ساده و آسان بود.  همچنین به ما اجازه می دهد تا یک background thread ایجاد کنیم که معمولا زیاد استفاده نمی شود.

GlobalScope در coroutine

runBlocking

مورد بعدی runBlocking است . اکنون آن را اجرا کنید و coroutine را به صورت مسدود کننده ،run  کنید. بنابراین این بار دیگر شما از آن زیاد استفاده نمی کنید. تنها زمانی می توانید از آن استفاده کنید که بخواهید اجرای یک کد را متوقف کرده و coroutines خود را اجرا کنید.

در موقعیت‌های دیگر که ممکن است بخواهید از آن استفاده کنید، در صورتی که تنها کاری است که برنامه شما انجام می‌دهد. تا زمانی که این تنها چیزی است که شما سعی دارید آن را انجام دهید ما کاملاً به طور گسترده در مثال‌های خود از آن استفاده خواهیم کرد.

1
2
3
4
5
6
7
8
9
runBlocking {
  
launch {
  
delay(1000L)
  
println("Task from runBlocking")
  
}

coroutinesScope { } coroutinesScope ،  scope جدیدی ایجاد می کند و تا زمان کامل شدن فرزندهای (childrens) coroutine کامل نمی شود. بنابراین ما یک scope ایجاد می کنیم ،  coroutine را اجرا می کنیم و در داخل scope ، می توانیم coroutine های دیگر ایجاد کنیم. این coroutine  که از اینجا شروع می شود تا زمانی که تمام coroutine  های داخلی نیز کامل نشوند تکمیل نمی شود.

1
2
3
4
5
6
coroutineScope {
launch {
delay(1500L)
println("Task from coroutineScope")
}
}

Coroutine Context

Context ارتباط تنگاتنگی با Scope دارد. بنابراین می توان گفت Scope و Context بسیار مشابه هستند. آنها اساساً مفاهیمی هستند که به راه های مختلف مورد استفاده قرار می گیرند.

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

Context ، مجموعه ای از داده ها است که مربوط به coroutine هستند. به عبارت ساده ، Context مجموعه ای از متغیرها است که می توانید در داخل coroutine به آنها دسترسی پیدا کنید. همه coroutine دارای Context مرتبط هستند

Scope و Context بسیار مشابه هستند تنها تفاوت این است که Scope استفاده شده برای ایجاد و مدیریت coroutine استفاده می شود. در حالی که Context مجموعه ای از متغیرها و داده های مرتبط با آن coroutine است.

عنصر (Element)مهم در Coroutines Context

Dispatcher – به سادگی تصمیم می گیرد که coroutine روی کدام Thread اجرا می شود.

Job – اساساً  LifeCycle(چرخه حیات) coroutine را اداره می کند.

1
2
3
4
5
6
7
8
9
10
11
12
import kotlinx.coroutines.CoroutineName
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
  
fun main() {
  runBlocking {
    launch(CoroutineName("myCoroutine")) {
      println("This is run from ${coroutineContext.get(CoroutineName.Key)}")
    }
  }
}

در قطعه کد بالا ، یک تابع به نام CoroutineName (“myCoroutine”) را ارسال کردیم که به جای myCoroutine می توانید نامی را در اینجا وارد کنید. در داخل Coroutine ، ما به سادگی برخی از پیام ها را چاپ می کنیم. حالا اگر کد را اجرا کنید ، نتیجه ای مانند تصویر زیر دریافت می کنید. بنابراین در اینجا coroutine context وجود دارد.This is run from CoroutineName(myCoroutine)

خلاصه·

  •  Scope – متدهای LifeCycle را برای coroutines ارائه می دهد و به ما امکان می دهد تا coroutines را شروع و متوقف کنیم
  • {} GlobalScope.launch – Scope coroutine چرخه حیات (LifeCycle) کل برنامه است.
  • runBlocking – یک Scope ایجاد می کند و یک coroutine را به صورت مسدود کننده اجرا می کند.
  • {} coroutineScope – یک Scope جدید ایجاد می کند و تا زمانی که همه فرزندان coroutine کامل نشوند ، کامل نخواهد شد.
اندروید Dagger 2 + Retrofit + RecyclerView
خواندن این مقاله
قدرت گرفته از افزونه نوشته‌های مرتبط هوشمند

نتیجه گیری

در این آموزش با Scope های کتابخانه Coroutine در کاتلین پرداختیم تا بتوایند مدیریت بهتری روی Coroutine  داشته باشید و دیگه نیازی به استفاده از Thread ها نداشته باشید.خیلی خوشحال می شوم نظرات خودتون رو برای من در بخش نظرات ارسال نمایید.

قبلی پنج گام ساده برنامه نویسی اندروید برای تازه کارها!
بعدی کامپوننت های رابط کاربری اندروید Jetpack

1 دیدگاه

اولین کسی باشید که در مورد این مطلب اظهار نظر می کند.

  • seyedi گفت:
    1403-03-24 در 10:12

    نکات کلیدی و مهمی در این مقاله اشاره شده بود.

    پاسخ
  • علی یاوری گفت:
    1403-03-24 در 10:19

    این مقاله برای من خیلی آموزنده بود. ممنون.

    پاسخ

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

جستجو برای:
دسته‌ها
  • 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

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

021-88945907

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

اشتراک گذاری در شبکه های اجتماعی
ارسال به ایمیل
https://amooznegar.com/?p=11194
  • Afghanistan (+93)
  • Albania (+355)
  • Algeria (+213)
  • American Samoa (+1)
  • Andorra (+376)
  • Angola (+244)
  • Anguilla (+1)
  • Antigua (+1)
  • Argentina (+54)
  • Armenia (+374)
  • Aruba (+297)
  • Australia (+61)
  • Austria (+43)
  • Azerbaijan (+994)
  • Bahrain (+973)
  • Bangladesh (+880)
  • Barbados (+1)
  • Belarus (+375)
  • Belgium (+32)
  • Belize (+501)
  • Benin (+229)
  • Bermuda (+1)
  • Bhutan (+975)
  • Bolivia (+591)
  • Bonaire, Sint Eustatius and Saba (+599)
  • Bosnia and Herzegovina (+387)
  • Botswana (+267)
  • Brazil (+55)
  • British Indian Ocean Territory (+246)
  • British Virgin Islands (+1)
  • Brunei (+673)
  • Bulgaria (+359)
  • Burkina Faso (+226)
  • Burundi (+257)
  • Cambodia (+855)
  • Cameroon (+237)
  • Canada (+1)
  • Cape Verde (+238)
  • Cayman Islands (+1)
  • Central African Republic (+236)
  • Chad (+235)
  • Chile (+56)
  • China (+86)
  • Colombia (+57)
  • Comoros (+269)
  • Cook Islands (+682)
  • Côte d'Ivoire (+225)
  • Costa Rica (+506)
  • Croatia (+385)
  • Cuba (+53)
  • Curaçao (+599)
  • Cyprus (+357)
  • Czech Republic (+420)
  • Democratic Republic of the Congo (+243)
  • Denmark (+45)
  • Djibouti (+253)
  • Dominica (+1)
  • Dominican Republic (+1)
  • Ecuador (+593)
  • Egypt (+20)
  • El Salvador (+503)
  • Equatorial Guinea (+240)
  • Eritrea (+291)
  • Estonia (+372)
  • Ethiopia (+251)
  • Falkland Islands (+500)
  • Faroe Islands (+298)
  • Federated States of Micronesia (+691)
  • Fiji (+679)
  • Finland (+358)
  • France (+33)
  • French Guiana (+594)
  • French Polynesia (+689)
  • Gabon (+241)
  • Georgia (+995)
  • Germany (+49)
  • Ghana (+233)
  • Gibraltar (+350)
  • Greece (+30)
  • Greenland (+299)
  • Grenada (+1)
  • Guadeloupe (+590)
  • Guam (+1)
  • Guatemala (+502)
  • Guernsey (+44)
  • Guinea (+224)
  • Guinea-Bissau (+245)
  • Guyana (+592)
  • Haiti (+509)
  • Honduras (+504)
  • Hong Kong (+852)
  • Hungary (+36)
  • Iceland (+354)
  • India (+91)
  • Indonesia (+62)
  • Iran (+98)
  • Iraq (+964)
  • Ireland (+353)
  • Isle Of Man (+44)
  • Israel (+972)
  • Italy (+39)
  • Jamaica (+1)
  • Japan (+81)
  • Jersey (+44)
  • Jordan (+962)
  • Kazakhstan (+7)
  • Kenya (+254)
  • Kiribati (+686)
  • Kuwait (+965)
  • Kyrgyzstan (+996)
  • Laos (+856)
  • Latvia (+371)
  • Lebanon (+961)
  • Lesotho (+266)
  • Liberia (+231)
  • Libya (+218)
  • Liechtenstein (+423)
  • Lithuania (+370)
  • Luxembourg (+352)
  • Macau (+853)
  • Macedonia (+389)
  • Madagascar (+261)
  • Malawi (+265)
  • Malaysia (+60)
  • Maldives (+960)
  • Mali (+223)
  • Malta (+356)
  • Marshall Islands (+692)
  • Martinique (+596)
  • Mauritania (+222)
  • Mauritius (+230)
  • Mayotte (+262)
  • Mexico (+52)
  • Moldova (+373)
  • Monaco (+377)
  • Mongolia (+976)
  • Montenegro (+382)
  • Montserrat (+1)
  • Morocco (+212)
  • Mozambique (+258)
  • Myanmar (+95)
  • Namibia (+264)
  • Nauru (+674)
  • Nepal (+977)
  • Netherlands (+31)
  • New Caledonia (+687)
  • New Zealand (+64)
  • Nicaragua (+505)
  • Niger (+227)
  • Nigeria (+234)
  • Niue (+683)
  • Norfolk Island (+672)
  • North Korea (+850)
  • Northern Mariana Islands (+1)
  • Norway (+47)
  • Oman (+968)
  • Pakistan (+92)
  • Palau (+680)
  • Palestine (+970)
  • Panama (+507)
  • Papua New Guinea (+675)
  • Paraguay (+595)
  • Peru (+51)
  • Philippines (+63)
  • Poland (+48)
  • Portugal (+351)
  • Puerto Rico (+1)
  • Qatar (+974)
  • Republic of the Congo (+242)
  • Romania (+40)
  • Reunion (+262)
  • Russia (+7)
  • Rwanda (+250)
  • Saint Helena (+290)
  • Saint Kitts and Nevis (+1)
  • Saint Pierre and Miquelon (+508)
  • Saint Vincent and the Grenadines (+1)
  • Samoa (+685)
  • San Marino (+378)
  • Sao Tome and Principe (+239)
  • Saudi Arabia (+966)
  • Senegal (+221)
  • Serbia (+381)
  • Seychelles (+248)
  • Sierra Leone (+232)
  • Singapore (+65)
  • Sint Maarten (+1)
  • Slovakia (+421)
  • Slovenia (+386)
  • Solomon Islands (+677)
  • Somalia (+252)
  • South Africa (+27)
  • South Korea (+82)
  • South Sudan (+211)
  • Spain (+34)
  • Sri Lanka (+94)
  • St. Lucia (+1)
  • Sudan (+249)
  • Suriname (+597)
  • Swaziland (+268)
  • Sweden (+46)
  • Switzerland (+41)
  • Syria (+963)
  • Taiwan (+886)
  • Tajikistan (+992)
  • Tanzania (+255)
  • Thailand (+66)
  • The Bahamas (+1)
  • The Gambia (+220)
  • Timor-Leste (+670)
  • Togo (+228)
  • Tokelau (+690)
  • Tonga (+676)
  • Trinidad and Tobago (+1)
  • Tunisia (+216)
  • Turkey (+90)
  • Turkmenistan (+993)
  • Turks and Caicos Islands (+1)
  • Tuvalu (+688)
  • U.S. Virgin Islands (+1)
  • Uganda (+256)
  • Ukraine (+380)
  • United Arab Emirates (+971)
  • United Kingdom (+44)
  • United States (+1)
  • Uruguay (+598)
  • Uzbekistan (+998)
  • Vanuatu (+678)
  • Venezuela (+58)
  • Vietnam (+84)
  • Wallis and Futuna (+681)
  • Western Sahara (+212)
  • Yemen (+967)
  • Zambia (+260)
  • Zimbabwe (+263)
مرورگر شما از HTML5 پشتیبانی نمی کند.

سوالی دارید؟ از ما بپرسید، کارشناسان ما در اسرع وقت با شما تماس می گیرند.

آموزنگار

آکادمی آموزنگار

  • 021-88945907
  • شنبه تا چهارشنبه از ساعت 8 تا 17
  • info@amooznegar.com
ورود
استفاده از شماره تلفن
استفاده از آدرس ایمیل
آیا هنوز عضو نشده اید؟ ثبت نام کنید
بازیابی رمز عبور
استفاده از شماره تلفن
استفاده از آدرس ایمیل
ثبت نام
استفاده از شماره تلفن
استفاده از ایمیل
قبلا عضو شده اید؟ ورود به سیستم
محافظت توسط