Android Kotlin Coroutines

Özgür Can
2 min readOct 10, 2021

-Kotlin Coroutines, asenkron olarak çalışan kodu basitleştirmek için Android’de kullanabileceğimiz bir asenkron tasarım modelidir. Android’de, Main Thread’i bloklayabilecek ve uygulamamızın yanıt vermemesine neden olabilecek uzun süreli işlemleri yönetmemize yardımcı olur.

Coroutines’in Özellikleri Nelerdir?

  • Lightweight (Hafiflik): Birçok Coroutine’i tek bir thread üzerinde çalıştırabiliriz. Buna rağmen coroutine, çalıştığı thread’i bloklamaz. Bu sayede birçok eş zamanlı işlemi desteklerken bellekten de tasarruf sağlar.
  • Fewer Memory Leaks (Daha Az Bellek Sızıntısı): Coroutine’in çalıştığı scope iptal edildiğinde, o scope dahilindeki coroutine’ler de iptal edilir.
  • Built-In Cancellation Support (Yerleşik İptal Desteği): İptal Desteği, çalışan coroutine hiyerarşisi aracılığıyla otomatik olarak yayılır.
  • Jetpack Integration (Jetpack Entegrasyonu): Çoğu Jetpack kütüphanesi, tam coroutine desteği sağlar.

Bir örnekle üzerine konuşalım.

Uygulama kullanılan kütüphaneler
-Coroutine
-Viewmodel
-Livedata
-Room
-Koin

İlk olarak bağımlılıklarımızı ekleyelim.

Bir fonksiyonun main thread’i blocklamadan işlem yapmasını istiyorsak suspend olarak belirtiyoruz bu fonksiyonu sadece Coroutine scope içerisinde kullanabiliriz anlamına geliyor.Dao sınıfımızdaki gerekli fonksiyonları suspend yaparak devam ediyoruz.

Sonrasında repository sınıfımızın constructor’ına dao nesnesi veriyoruz.Burada CoroutineScope içerisinde suspend fonksiyonları kullanıyoruz.

Dispatchers Types

✳ ︎IO → Ağ ve disk için.

✳︎ Main → Ui kodlarımız için.

✳︎ Default → Cpu’yu yoğun kullandığımız işlemlerde.

ViewModel sınıfımız içinde de benzer işlem yapağız ama daha kullanışlı olan viewModelScope’u kullanacağız bu scope içerisinde dispatchers’ı belirtmemize gerek yok.Neden daha kullanışlı derseniz viewModel clear olduğu zaman içerisindeki viewModelScope’lar da clear olmuş olacak bu da performans ve memory açısından önemli bizim için.

Son olarak UI kodumuzu paylaşacağım ve bitereceğiz..

Basit bir room örneği ile aldık. Bir sonraki makale’de MVVM ile daha geniş bir örnek ile uzak sunucudan verileri alacağız. Coroutine’lerin artık ne olduğunu az çok biliyoruz.
-Run Block
-Flow Case’leri
-İşlem bitene kadar bekletme await() bir sonraki makalede daha geniş almak üzere görüşmek dileğiyle..

*Room Kütüphanesi genel olarak güncelleme alan bir kütüphane olduğu için anotation’lar için implementler değişebiliyor.

Güncel Room Kütüphanesi için: https://developer.android.com/jetpack/androidx/releases/room?gclid=Cj0KCQjwnoqLBhD4ARIsAL5JedIiPZXDkKVsBJk_c23JjfzftJ_vqrfkkptxmaA5mMTRAi7oTUzQzsAaAvu0EALw_wcB&gclsrc=aw.ds

Proje kaynak kodu: https://github.com/sezginozgurr/TodoCoroutines

--

--