🌃Asenkrona Giriş
👀 Asenkron İşlemleri Tanıyalım
💫 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
🆚 İkisi Arasındaki Temel Farklar
Her ikisi de sistemi engellemeden çalışan bir yapıya sahiptir
|
|
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.
Genel olarak AsyncTaskLoader
en sık kullanılan yapıdır.
🧱 UI Thread
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
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 😥
⭐ Diğer Asenkron İşlemler
🏷️ Etiketleme ile Asenkron
👷♂️
@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
🧙♂ Detaylı bilgi için Thread annotations alanına bakabilirsin.
🎃 Kotlin Coroutine
🕊️ 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 |
🧙♂ Detaylı bilgi için:
alanlarına bakabilirsin.
🔗 Harici Bağlantılar
Last updated