यूआईट्रेड आपके आवेदन के लिए निष्पादन का मुख्य धागा है। यह वह जगह है जहाँ आपका अधिकांश एप्लिकेशन कोड चलाया जाता है। आपके सभी एप्लिकेशन कंपोनेंट्स (एक्टिविटीज़, सर्विसेज़, कंटेंटप्रोवाइडर्स, ब्रॉडकास्टवर्स) इस थ्रेड में बनाए गए हैं, और उन कंपोनेंट्स को कोई भी सिस्टम कॉल इस थ्रेड में की जाती है।
उदाहरण के लिए, मान लें कि आपका आवेदन एकल गतिविधि वर्ग है। फिर इस UIThread में सभी जीवनचक्र विधियों और आपके अधिकांश ईवेंट हैंडलिंग कोड को चलाया जाता है। इस तरह के तरीके हैं onCreate
, onPause
, onDestroy
, onClick
, आदि इसके अतिरिक्त, इस जहां यूआई के लिए अद्यतन के सभी किया जाता है। कुछ भी जो UI को अद्यतन करने या परिवर्तित करने का कारण बनता है वह UI थ्रेड पर घटित होता है।
अपने आवेदन की प्रक्रियाओं और थ्रेड्स के बारे में अधिक जानकारी के लिए यहां क्लिक करें।
जब आप पृष्ठभूमि में काम करने के लिए स्पष्ट रूप से एक नया धागा बनाते हैं, तो यह कोड UIThread पर नहीं चलाया जाता है। तो क्या होता है अगर इस पृष्ठभूमि के धागे को यूआई को बदलने के लिए कुछ करने की ज़रूरत है? यह वही runOnUiThread
है जिसके लिए है। वास्तव में आप एक हैंडलर का उपयोग करने वाले हैं (इस बारे में अधिक जानकारी के लिए नीचे दिया गया लिंक देखें)। यह इन पृष्ठभूमि थ्रेड को कोड निष्पादित करने की क्षमता प्रदान करता है जो UI को संशोधित कर सकते हैं। वे यूआई-मॉडिफाइंग कोड को रननेबल ऑब्जेक्ट में डालकर रनऑन यूआईट्र्रेड विधि से पास करते हैं।
वर्कर थ्रेडिंग के बारे में अधिक जानकारी के लिए और उनमें से यूआई को अपडेट करने के लिए यहां क्लिक करें
मैं व्यक्तिगत रूप से केवल runOnUiThread
अपने इंस्ट्रूमेंटेशन टेस्ट में विधि का उपयोग करता हूं। चूंकि परीक्षण कोड UIThread में निष्पादित नहीं होता है, इसलिए आपको UI को संशोधित करने वाले कोड को चलाने के लिए इस पद्धति का उपयोग करने की आवश्यकता है। इसलिए, मैं अपने एप्लिकेशन में क्लिक और प्रमुख घटनाओं को इंजेक्ट करने के लिए इसका उपयोग करता हूं। फिर मैं सही स्थिति में सुनिश्चित करने के लिए एप्लिकेशन की स्थिति की जांच कर सकता हूं।
UIThread पर परीक्षण और रनिंग कोड के बारे में अधिक जानकारी के लिए यहां क्लिक करें