एसिंक्रोनस लॉजिक, AsyncTask के लिए Android API ख़त्म होने वाला है। एओएसपी की प्रतिबद्धता के अनुसार, एंड्रॉइड 11 में एपीआई को हटा दिया जाएगा।
अब कई वर्षों से, एंड्रॉइड का AsyncTask शुरुआती और विशेषज्ञ डेवलपर्स के लिए एक प्रमुख उपकरण रहा है। यदि आपने कभी एंड्रॉइड में किसी भी प्रकार के एसिंक्रोनस लॉजिक के लिए कोई ट्यूटोरियल गूगल पर खोजा है, तो संभावना है कि पहले कुछ परिणाम AsyncTask का उपयोग करने का सुझाव देते हैं। ऐसा भी नहीं है कि यह कोई यादृच्छिक विकल्प है। AsyncTask मूल रूप से बैकग्राउंड ऑपरेशंस और एप्लिकेशन के UI के बीच इंटरैक्शन को सरल बनाने के लिए बनाया गया था। कुछ समय तक इसने वैसा ही अच्छा किया। AsyncTask वास्तव में अतुल्यकालिक कार्यों को सरल बनाने में मदद करता है। हालाँकि, इसका मतलब यह नहीं है कि यह एकदम सही है।
एक चीज़ जो बहुत सारे एप्लिकेशन को करने की ज़रूरत होती है वह है किसी दूरस्थ सर्वर से जानकारी प्राप्त करना। चूंकि नेटवर्क अनुरोधों में कुछ समय लग सकता है, इसलिए आमतौर पर उन्हें एसिंक्रोनस रूप से करना महत्वपूर्ण है ताकि वे एप्लिकेशन को फ्रीज न करें। एक बार ऑपरेशन पूरा हो जाने पर, यूआई को अपडेट किया जा सकता है। हालाँकि, यह संभव है कि जब तक नेटवर्क अनुरोध पूरा हो जाता है, यूआई का प्रासंगिक हिस्सा मौजूद नहीं रहता है, जो क्रैश या अन्य बग का कारण बन सकता है। जबकि AsyncTask समग्र प्रक्रिया को सरल बनाता है, यह एंड्रॉइड के एप्लिकेशन जीवनचक्र का सम्मान नहीं करता है। इसका मतलब है कि यूआई परिवर्तन के बाद AsyncTask फिनिशिंग के खिलाफ कोई अंतर्निहित सुरक्षा नहीं है। बेशक, चेक और अन्य सुरक्षा को मैन्युअल रूप से जोड़ना संभव है, लेकिन यह बहुत सारे रिपीट कोड (AKA बॉयलरप्लेट) जोड़ता है। इस तरह की समस्याओं के कारण, AsyncTask एक तरह से किनारे हो गया है। Google ने भी अपने काम करने के तरीके में बहुत अधिक बदलाव नहीं किए हैं।
खैर, ऐसा लगता है कि Google की राय यह है कि AsyncTask सहेजने से परे है। हाल ही में AOSP प्रतिबद्धता में, AsyncTask को उन्हीं कारणों का हवाला देते हुए अस्वीकृत कर दिया गया था जिनके बारे में मैंने अभी बात की थी। हालाँकि यह वास्तव में अंतिम-उपयोगकर्ताओं के लिए बहुत बड़ा बदलाव नहीं है, लेकिन डेवलपर्स के लिए यह बहुत मायने रख सकता है। यदि आप एक पुराना कोडबेस बनाए रख रहे हैं या आप एंड्रॉइड में एसिंक्रोनस कार्यों के साथ शुरुआत कर रहे हैं, तो आपको संभवतः कोड का एक समूह बदलना होगा। हालाँकि, सौभाग्य से, Google ने डेवलपर्स को धूल में नहीं छोड़ा है।
AsyncTask की सीमाओं के कारण, समय के साथ विकल्प सामने आए हैं, जैसे RxJava और कोटलिन की नई (ish) Coroutines लाइब्रेरी। इन विकल्पों में AsyncTask की तुलना में बहुत अधिक लचीलापन और सुविधाएँ हैं, इसलिए उन्होंने काफी लोकप्रियता हासिल की है। AsyncTask के लिए अपनी अवनति सूचना में, Google Java के Concurrency Framework याkotlin Coroutines का उपयोग करने की अनुशंसा करता है।
व्यक्तिगत रूप से, मैंने पहले ही कोटलिन के कॉरआउटिंस का उपयोग शुरू कर दिया है, और पीछे मुड़कर नहीं देखा है। बेशक, मुझे पता है कि कई लोगों ने अपने कोड को AsyncTask के आसपास कसकर एकीकृत कर लिया है, इसलिए यह शायद उनके लिए कम से कम थोड़ी असुविधा है। यह अच्छी बात है कि चुनने के लिए बहुत सारे विकल्प मौजूद हैं। अपना कोड बदलना कष्टप्रद हो सकता है, लेकिन कम से कम इस बार यह संभव है।
यदि आप अधिक विवरण चाहते हैं, तो आप कमिट देख सकते हैं यहाँ। कमिट को आज पहले ही मर्ज कर दिया गया था, और जब तक पाइपलाइन में कोई एंड्रॉइड रखरखाव रिलीज़ नहीं होता, हम इस बदलाव को अगले साल एंड्रॉइड 11 में प्रतिबिंबित होते देखेंगे।