Eşzamansız mantık için Android API'si AsyncTask kullanımdan kaldırılıyor. AOSP taahhüdüne göre API, Android 11'de kullanımdan kaldırılacak.
Yıllardır Android'in AsyncTask'ı hem yeni başlayan hem de uzman geliştiriciler için temel bir araç olmuştur. Android'de herhangi bir eşzamansız mantık türü için Google'da bir eğitim aradıysanız, muhtemelen ilk birkaç sonuç AsyncTask'ın kullanılmasını önermektedir. Bu rastgele bir seçim de değil. AsyncTask, başlangıçta arka plan işlemleri ile bir uygulamanın kullanıcı arayüzü arasındaki etkileşimi basitleştirmek için oluşturuldu. Bir süreliğine bunu iyi yaptı. AsyncTask, eşzamansız görevlerin basitleştirilmesine gerçekten yardımcı olur. Ancak bu mükemmel olduğu anlamına gelmiyor.
Pek çok uygulamanın yapması gereken şeylerden biri, uzak bir sunucudan bilgi almaktır. Ağ istekleri biraz zaman alabileceğinden, uygulamanın donmasına neden olmaması için bunları eşzamansız olarak yapmak genellikle önemlidir. İşlem tamamlandıktan sonra kullanıcı arayüzü güncellenebilir. Ancak ağ isteği tamamlandığında kullanıcı arayüzünün ilgili bölümünün artık mevcut olmaması mümkündür ve bu da çökmelere veya diğer hatalara neden olabilir. AsyncTask genel süreci basitleştirse de Android'in uygulama yaşam döngüsüne saygı göstermiyor. Bu, bir kullanıcı arayüzü değişikliğinden sonra AsyncTask'ın sonlandırılmasına karşı yerleşik bir koruma olmadığı anlamına gelir. Elbette, kontrolleri ve diğer korumaları manuel olarak eklemek mümkündür, ancak bu, çok fazla tekrar kodu (diğer adıyla ortak metin) ekler. Bunun gibi sorunlar nedeniyle AsyncTask bir nevi yarı yolda kaldı. Google ayrıca çalışma şekliyle ilgili pek fazla değişiklik yapmadı.
Görünüşe göre Google'ın görüşü AsyncTask'in kurtarılamaz olduğu yönünde. Yakın zamanda yapılan bir AOSP taahhüdünde AsyncTask, az önce bahsettiğim sebeplere benzer sebeplerden dolayı kullanımdan kaldırıldı. Bu, son kullanıcılar için çok büyük bir değişiklik olmasa da geliştiriciler için çok şey ifade edebilir. Daha eski bir kod tabanını kullanıyorsanız veya Android'de eşzamansız görevlere yeni başlıyorsanız, muhtemelen bir grup kodu değiştirmeniz gerekecektir. Neyse ki Google geliştiricileri toz içinde bırakmadı.
AsyncTask'ın sınırlamaları nedeniyle, zamanla RxJava ve Kotlin'in yeni (ish) Coroutines kütüphanesi gibi alternatifler ortaya çıktı. Bu alternatifler AsyncTask'tan çok daha fazla esnekliğe ve özelliğe sahip olduğundan oldukça popüler hale geldiler. Google, AsyncTask'in kullanımdan kaldırılma bildiriminde Java'nın Eşzamanlılık çerçevesinin veya Kotlin Coroutines'in kullanılmasını önerir.
Şahsen ben zaten Kotlin'in Coroutines'ini kullanmaya başladım ve geriye bakmadım. Elbette birçok kişinin kodlarını AsyncTask'a sıkı bir şekilde entegre ettiğini biliyorum, bu yüzden bu muhtemelen onlar için en azından hafif bir rahatsızlıktır. Aralarından seçim yapabileceğiniz birçok alternatifin olması iyi bir şey. Kodunuzu değiştirmek can sıkıcı olabilir ama en azından bu sefer mümkün.
Daha fazla ayrıntı istiyorsanız, taahhüdü kontrol edebilirsiniz. Burada. Taahhüt bugün erken saatlerde birleştirildi ve üretim hattında bir Android bakım sürümü olmadığı sürece bu değişikliğin gelecek yıl Android 11'e yansıdığını göreceğiz.