Sobes.tech
Middle

Android uygulamaları geliştirmek için kullanılan programlama dilinde async ve await yapıları nasıl çalışır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Kotlin'de, Android geliştirme için kullanılan async ve await, coroutine kütüphanesinden fonksiyonlardır. Bunlar dilin anahtar kelimeleri değildir, bazı diğer dillerde olduğu gibi.

async, yeni bir coroutine başlatır ve gelecekteki sonuçları temsil eden Deferred türünde bir nesne döner. async'i çağıran coroutine, başlatılan asenkron işlemin tamamlanmasını beklemeden çalışmasına devam eder.

await, bir Deferred nesnesi üzerinde çağrılan bir suspending fonksiyondur. Bu, async ile başlatılan asenkron işlemi tamamlayana kadar mevcut coroutine'in yürütülmesini durdurur ve sonucunu döner. Sonuç zaten mevcutsa, await hemen döner.

Sözdizimi:

import kotlinx.coroutines.*

suspend fun fetchUserData(): String {
    // Uzun süren bir işlemin simülasyonu
    delay(1000)
    return "Kullanıcı Verisi"
}

suspend fun processData(data: String): String {
    // Başka bir uzun süren işlemin simülasyonu
    delay(2000)
    return "İşlenmiş: $data"
}

suspend fun main() {
    val deferredData = CoroutineScope(Dispatchers.IO).async {
        // Asenkron veri alımı
        fetchUserData()
    }

    // Veriler yüklenirken başka işler yapabiliriz

    val data = deferredData.await() // fetchUserData()'nin tamamlanmasını bekle

    val processedResult = withContext(Dispatchers.Default) {
        // Veriyi işleme, muhtemelen başka bir iş parçacığında
        processData(data)
    }

    println(processedResult) // "İşlenmiş: Kullanıcı Verisi" sonucu, gecikmelerden sonra yazdırılır
}

Anahtar noktalar:

  • async, sonucu temsil eden Deferred döner.
  • await, çağıran coroutine'i durduran suspending bir fonksiyondur.
  • Non-bloklayıcı asenkron işlemler için coroutine bağlamında kullanılır.
  • Birden fazla asenkron görevi paralel olarak yürütmeye ve sonuçlarını toplamaya olanak tanır.