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

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

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

وبلاگ

آکادمی آموزنگار > اخبار > برنامه نویسی > اندروید > توابع تعلیقی (Suspending functions) درCoroutine

توابع تعلیقی (Suspending functions) درCoroutine

1400-09-02
ارسال شده توسط آموزنگار
اندروید
توابع تعلیقی (Suspending functions) درCoroutine

در این مقاله ، توابع تعلیقی و نحوه عملکرد آن در coroutine android را به شما نشان خواهیم داد. اینکه چه نیازی به این موارد در یک coroutine وجود دارد  و چگونه callback را به صورت یکپارچه ایجاد می‌کنند.

در چه مواردی به توابع تعلیقی نیاز داریم؟

در coroutine ، اگر سعی کنید به یک تابع از coroutine دسترسی پیدا کنید ، خطایی دریافت خواهید کرد مگر اینکه آن را به یک تابع تعلیقی تبدیل کنید.در جلسات قبلی با مفاهیم اصول اولیه coroutines و آشنایی با Coroutine Scope آشنا شدیم. در این جلسه قصد داریم با مبحث suspend function ها در coroutines آشنا شویم.

مثالی از توابع تعلیقی Suspending

در این مثال ، از تابع () composeMessage  و یک متغیر به نام count که برابر با صفر است استفاده می کنیم. با استفاده از این متغیر ما به سادگی تعداد تماس ها را برای تعلیق فانکشن ردیابی می کنیم. با این حال ، توابع تعلیقی composeMessage() بخشی از Coroutine خواهد بود. در اینجا نحوه ارتباط بین Thread اصلی و یک coroutine آسان خواهد بود.

import kotlinx.coroutines.GlobalScope
 
import kotlinx.coroutines.delay
 
import kotlinx.coroutines.launch
 
var count = 0
 
fun main() {
 
}
 
suspend fun composeMessage() {
 
delay(500L)
 
println("Android!")
 
count++
 
}

ایجاد improveMessage()

اجازه دهید جلوتر برویم و یک تابع دیگر به طور فرضی با نام improveMessage() ایجاد کنیم. این تابع نیز به نوعی کارهای مشابه را انجام می دهد. بنابراین اینجا تأخیر 1 ثانیه است و به سادگی پیامی را مانند زیر به وسیله دستورprintln چاپ خواهد کرد.

suspend fun improveMessage() {
 
delay(1000L)
 
println("Suspend functions are cool")
 
count++
 
}

فراخوانی توابع در Thread اصلی

حالا در برنامه اصلی خود ، این دو coroutine را مانند زیر راه اندازی کنید.

import kotlinx.coroutines.GlobalScope
 
import kotlinx.coroutines.delay
 
import kotlinx.coroutines.launch
 
var count = 0
 
fun main() {
 
GlobalScope.launch { composeMessage() }
 
GlobalScope.launch { improveMessage() }
 
print("Hi, ")
 
Thread.sleep(2000L)
 
println("There have been $count calls so far")
 
}
 
suspend fun composeMessage() {
 
delay(500L)
 
println("Android!")
 
count++
 
}
 
suspend fun improveMessage() {
 
delay(1000L)
 
println("Suspend functions are cool")
 
count++
 
}

خروجی

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

حالا اجازه دهید برنامه را اجرا کنیم و خروجی را ببینیم

Hi, Android!

Suspend functions are cool

There have been 2 calls so far

بنابراین در کنسول ما در ابتدا Hi, را دریافت می کنیم و نیم ثانیه بعد Android! را دریافت خواهیم کرد. سپس ما در ثانیه دوم دومین پیام را از طریق متد improveMessage() دریافت خواهیم کرد. سپس متغیر count را چک می کنیم.

ما در Thread اصلی که توسط Coroutine آپدیت شده، به آن متغیر دسترسی داریم. بنابراین چگونگی کار همگام سازی را نشان می دهد و بسیار آسان است که توابع یا متغیرها را در Thread اصلی Coroutine به روز کنید.

نتیجه

این یک داستان تخیلی چندان پیچیده نیست و احتمالاً در شرایط واقعی بسیار مفید نیست. اما مطمئن هستیم که این مطلب نشان می دهد که چگونه می توان یک تابع را از طریق Coroutine اجرا کرد. همچنین مهم است که چگونه می توانیم متغیرهای local را از طریق یک Coroutine به روز کنیم.

برچسب ها: coroutine
قبلی 6 راه برای به روز بودن در توسعه اندروید
بعدی نحوه نوشتن کد تمیز در برنامه نویسی

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

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

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

اشتراک گذاری در شبکه های اجتماعی
ارسال به ایمیل
https://amooznegar.com/?p=11228
ورود
استفاده از شماره تلفن
استفاده از آدرس ایمیل
آیا هنوز عضو نشده اید؟ ثبت نام کنید
بازیابی رمز عبور
استفاده از شماره تلفن
استفاده از آدرس ایمیل
ثبت نام
استفاده از شماره تلفن
استفاده از ایمیل
قبلا عضو شده اید؟ ورود به سیستم
محافظت توسط   
مرورگر شما از HTML5 پشتیبانی نمی کند.

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

آموزنگار

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

  • 021-71058559
  • شنبه تا چهارشنبه از ساعت 8 تا 17
  • info@amooznegar.com