धागा
एक धागा निष्पादन की एक समवर्ती इकाई है। इसकी अपनी कॉल स्टैक है। अनुप्रयोगों में थ्रेड्स को लागू करने के लिए दो विधियाँ हैं।
कोई एक नया वर्ग प्रदान कर रहा है जो थ्रेड का विस्तार करता है और इसकी रन () विधि को ओवरराइड करता है। दूसरा अपने निर्माण के दौरान एक रननेबल ऑब्जेक्ट के साथ एक नया थ्रेड इंस्टेंस प्रदान कर रहा है। एक धागे को "प्रारंभ" विधि कहकर निष्पादित किया जा सकता है। आप किसी थ्रेड की "प्राथमिकता" को उसकी "सेटपैरिटी (int)" विधि कह कर सेट कर सकते हैं।
यदि आपके पास UI भाग में कोई प्रभाव नहीं है, तो एक थ्रेड का उपयोग किया जा सकता है। उदाहरण के लिए, आप कुछ वेब सेवा को कॉल कर रहे हैं या कुछ डेटा डाउनलोड कर रहे हैं, और डाउनलोड करने के बाद, आप इसे अपनी स्क्रीन पर प्रदर्शित कर रहे हैं। फिर आपको थ्रेड के साथ एक हैंडलर का उपयोग करने की आवश्यकता है और इससे थ्रेड्स से सभी प्रतिक्रियाओं को संभालने के लिए आपका एप्लिकेशन जटिल हो जाएगा।
एक हैंडलर आपको एक थ्रेड के MessageQueue से जुड़े संदेश और Runnable ऑब्जेक्ट को भेजने और संसाधित करने की अनुमति देता है। प्रत्येक थ्रेड में प्रत्येक संदेश कतार है। (एक टू डू लिस्ट की तरह), और थ्रेड प्रत्येक संदेश को ले जाएगा और इसे तब तक संसाधित करेगा जब तक संदेश कतार खाली न हो जाए। इसलिए, जब हैंडलर संचार करता है, तो यह कॉल करने वाले को एक संदेश देता है और यह प्रक्रिया की प्रतीक्षा करेगा।
यदि आप जावा थ्रेड का उपयोग करते हैं तो आपको अपने कोड में निम्नलिखित आवश्यकताओं को संभालने की आवश्यकता है:
यदि आप उपयोगकर्ता इंटरफ़ेस पर वापस परिणाम पोस्ट करते हैं तो मुख्य थ्रेड के साथ सिंक्रनाइज़ेशन थ्रेड को रद्द करने के लिए कोई डिफ़ॉल्ट नहीं है। डिफ़ॉल्ट थ्रेड पूलिंग नहीं एंड्रॉइड में कॉन्फ़िगरेशन परिवर्तनों को संभालने के लिए कोई डिफ़ॉल्ट नहीं है।
AsyncTask
AsyncTask UI थ्रेड का उचित और आसान उपयोग सक्षम करता है। यह वर्ग थ्रेड और / या हैंडलर में हेरफेर किए बिना यूआई थ्रेड पर पृष्ठभूमि के संचालन और प्रकाशन परिणामों को प्रदर्शित करने की अनुमति देता है। एक अतुल्यकालिक कार्य एक संगणना द्वारा परिभाषित किया जाता है जो एक पृष्ठभूमि थ्रेड पर चलता है और जिसका परिणाम UI थ्रेड पर प्रकाशित होता है।
AsyncTask निम्नलिखित 4 चरणों से गुजरेगा:
onPreExecute ()
कार्य निष्पादित होने से पहले UI थ्रेड पर शामिल किया गया
doInbackground (पैरामीटर ..)
OnPreExecute () के क्रियान्वयन के तुरंत बाद पृष्ठभूमि थ्रेड में शामिल किया गया।
onProgressUpdate (प्रगति ..)
पब्लिशप्रोग्रेड (प्रगति ...) के लिए कॉल के बाद यूआई थ्रेड पर आमंत्रित किया गया।
onPostExecute (परिणाम)
पृष्ठभूमि की गणना खत्म होने के बाद UI थ्रेड पर आमंत्रित किया गया।
आपको AsyncTask का उपयोग क्यों करना चाहिए?
UI थ्रेड के लिए उपयोग करना आसान है। (इसलिए, जब कॉलर थ्रेड UI थ्रेड है, तो इसका उपयोग करें)।
हैंडलर में हेरफेर करने की कोई जरूरत नहीं है।