- 💫 Ayrı bir Thread üzerinden gerçekleşen bu işlemleri sistemin ilerlemesi engellemez
- 🙋♂️ İşleri tamamlandığı zaman UI Thread'e dahil olurlar
- ⭐ AsyncTask veya AsycnTaskLoader yapıları kullanılır
Her ikisi de sistemi engellemeden çalışan bir yapıya sahiptir
AsyncTask |
AsyncTaskLoader |
---|---|
Direkt olan çalışır | Dolaylı olarak çalışır |
Yapılandırma ayarları değiştiğinde iptal olur ve yeniden başlatılır | Yapılandırma ayarlarından etkilenmez |
Geri dönüş vermeyecek işlemlerde kullanılır | Geri dönüşümlü işlemlerde kullanılır |
Kısa ve iptal edilebilir işlemlerde tercih edilir | Uzun ve iptal edilemeyecek işlemlerde tercih edilir |
Telefonu döndürme gibi işlemler yapılandırma ayarlarını değiştirir.
{% hint style="success" %}
Genel olarak AsyncTaskLoader
en sık kullanılan yapıdır.
{% endhint %}
Android üzerindeki tüm görüntü işlemlerinin yapıldı alandır.
- UI Thread engellenmemeli
- UI Thread sadece görsel işlemler için kullanılmalıdır
- Tüm işlemler 16ms'den kısa bir sürede tamamlanmalıdır
{% hint style="danger" %} Yaklaşık olarak 5s'den uzun süren işlemler "application not responding" (ANR) diyaloğunu oluşturur ve kullanıcı bunu görmesi durumunda uygulamayı kapatıp, siler 😥 {% endhint %}
- 👷♂️
@WorkerThread
gibi etiketlerle asenkron çalışması gereken metotlar tanımlanır - 🦸♂️ Kod hakimiyetini artırmak için tercih edilir
- 📢 Thread işlemini otomatik olarak yapmaz, detaylar için buraya bakabilirsin
{% hint style="info" %} 🧙♂ Detaylı bilgi için Thread annotations alanına bakabilirsin. {% endhint %}
- 🕊️ Thread işlemlerini kolaylaştıran bir hafif yapıdır
- 👮♂️ Main (UI), IO, Default thread yapıları ile arka plan işlemlerini yönetirsiniz
- 💁♂️ AsyncTask kullanmaya gerek kalmaz
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.1'
ilebuild.gradle
dosyasına dahil etmen gerekmektedir
🧱 Dispatchers.Main | 🔣 Dispatchers.IO | 🎳 Dispatchers.Default |
---|---|---|
UI Thread işlemleri | Disk ve network işlemleri | CPU gerektiren işlemler |
Fonksiyon çağırma | Database | Liste sıralama |
View işlemleri | Dosya okuma & yazma | JSON parsing |
LiveData işlemleri | Ağ işlemleri | DiffUtils |
{% hint style="info" %} 🧙♂ Detaylı bilgi için:
- 🌇 Kotlin Coroutine ~ YEmreAk
- 📈 Improve app performance with Kotlin coroutines
- 📖 Coroutines on Android (part I): Getting the background
- 🐣 Kotlin Coroutines on Android
alanlarına bakabilirsin. {% endhint %}