2010-07-16 23 views
52

एंड्रॉइड दस्तावेज़ कहता है "गतिविधियों और अन्य घटकों की तरह, सेवाएं आवेदन प्रक्रिया के मुख्य धागे में चलती हैं।"मुख्य थ्रेड यूआई थ्रेड के समान है?

क्या मुख्य धागा यूआई थ्रेड के समान ही है?

+2

स्वीकृत उत्तर (और संदर्भित दस्तावेज़ीकरण) में बयान के विपरीत, कुछ मामलों में, मुख्य और यूआई थ्रेड समान नहीं हो सकते हैं। यहां पूरा पूरा उत्तर उपलब्ध है: http://stackoverflow.com/a/40795895/2463035 – Vasiliy

उत्तर

61

ऐसा लगता है। http://android-developers.blogspot.com/2009/05/painless-threading.html से उद्धृत: "जब कोई एप्लिकेशन लॉन्च किया जाता है, तो सिस्टम एप्लिकेशन के लिए" मुख्य "नामक धागा बनाता है। मुख्य धागा, जिसे यूआई थ्रेड भी कहा जाता है ...", आधिकारिक API दस्तावेज़।

+9

नोट: यह केवल एंड्रॉइड पर सच है। अन्य जावा ऐप्स में आपका "मुख्य" धागा विशेष रूप से यूआई थ्रेड नहीं है और सिद्धांत में आपको मुख्य थ्रेड पर अपना जीयूआई भी नहीं बनाना चाहिए (लगभग हर कोई ऐसा करता है और मुझे नहीं लगता कि यह अभी तक किसी को मार डाला है) –

+1

एंड्रॉइड लॉलीपॉप नए रेंडर थ्रेड प्रस्तुत करता है। – Simon

+2

कृपया ध्यान दें कि यह उत्तर पूरी तरह से सटीक नहीं है (आधिकारिक दस्तावेज़ों में गलतता के कारण यह उद्धरण देता है)। इस प्रश्न का पूरा उत्तर यहां उपलब्ध है: http://stackoverflow.com/a/40795895/2463035 – Vasiliy

9

"मुख्य अनुप्रयोग धागा" को कभी-कभी "यूआई थ्रेड" कहा जाता है।

+0

क्या आप मुझे सुझाव दे सकते हैं कि मेनथ्रेड यूआई थ्रेड है और दस्तावेज़ कहते हैं कि सेवाएं चल रही हैं मुख्य धागा तो सेवाओं को यूआई थ्रेड ब्लॉक क्यों नहीं करता है, सेवाएं कैसे काम करती हैं? – Erum

+0

@Erum: "दस्तावेज़ कहते हैं कि सेवाएं मुख्य धागे पर चलती हैं" - नहीं, प्रलेखन नहीं करता है। जावा प्रोग्रामिंग में, ऑब्जेक्ट थ्रेड पर नहीं चलते हैं। थ्रेड्स। 'सेवा' ('ऑन क्रेट() ',' ऑनस्टार्ट कॉमांड() ',' ऑनबिंड() ',' ऑनस्ट्रोय()') के जीवन चक्र विधियों को मुख्य अनुप्रयोग धागे पर बुलाया जाता है, और उन तरीकों से किए गए किसी भी काम को मुख्य अनुप्रयोग थ्रेड पर यूआई को अद्यतन करने से अवरुद्ध कर दिया जाएगा। आमतौर पर लंबे समय से चलने वाले कार्यों के लिए सेवाएं फोर्क धागे। कुछ वर्ग, जैसे 'IntentService', आपके लिए ऐसा धागा प्रदान करते हैं, अन्यथा, आप अपना खुद का फोर्क करते हैं। – CommonsWare

+0

"मुख्य अनुप्रयोग धागा "कभी-कभी" यूआई थ्रेड "कहा जाता है। तो क्या आप कृपया बता सकते हैं कि कौन से मामले हैं जिनमें मुख्य धागे को ui धागा कहा जाता है और जिसमें –

3

प्रत्येक गतिविधि का अपना यूआई थ्रेड होता है। जैसे ही वीएम बूट हो जाता है, सिस्टम सर्वर ज़ीगोट द्वारा शुरू किया जाता है। सिस्टम सर्वर द्वारा नई थ्रेड में गतिविधि प्रबंधक सेवा जैसी सभी अन्य सेवाएं प्रारंभ की गई हैं।

+0

मुझे नहीं लगता कि यह * काफी * सत्य है: (जब तक आप 'गतिविधि' के बजाय 'एप्लिकेशन' का अर्थ नहीं लेते): "सिस्टम किसी घटक के प्रत्येक उदाहरण के लिए एक अलग धागा नहीं बनाता है।" - http://developer.android.com/guide/components/processes-and-threads.html# थ्रेड देखें - बेशक आप प्रत्येक घटक (गतिविधि, सेवा, आदि) का अनुरोध कर सकते हैं मैनिफेस्ट फ़ाइल में अपनी प्रक्रिया है, लेकिन यह डिफ़ॉल्ट रूप से ऐसा नहीं किया जाता है। –

17

यूआई धागा और मुख्य थ्रेड एंड्रॉयड केवल में ही हैं।

मुख्य धागा, कि ड्रा की तरह यूआई घटनाओं से निपटने, सुनो और यूआई घटनाओं प्राप्त करने के लिए जिम्मेदार है।

उत्तर भी यह घटकों संबंधित अनुप्रयोग के अंतर्गत आता है कि के लिए यूआई टूलकिट की चल साथ सहभागिता के लिए जिम्मेदार है।

जब एक उपयोगकर्ता घटना आवेदन में होता है मुख्य धागा * कतार में घटना जोड़ने के लिए

जरूरत - उचित देखें> घटना के बारे में अंतरंग -> की स्थिति बदलने देखें -> दृश्य परिवर्तनों के अनुसार देखें -> विशेष घटना कार्रवाई के लिए प्रतिक्रिया की प्रतीक्षा -> सूचित होने के बाद और ईवेंट कार्रवाई पूर्ण हो गई कतार में ईवेंट को हटाने की आवश्यकता है।

*

उपरोक्त हर कार्रवाई मुख्य धागा द्वारा नियंत्रित किया जाता है (इतना ही नहीं इसके बाद के संस्करण आपरेशन, यह आपरेशन यूआई धागा द्वारा नियंत्रित की एक एक है), तो हमारे आवेदन करता है, तो के बारे में घटना का जवाब देने में विफल रहता है 5 सेकंड एंड्रॉइड त्रुटि त्रुटि नहीं दिखाएगा

तो केवल यूआई थ्रेड में प्रकाश प्रक्रियाओं को करने के लिए व्यापक रूप से सुझाव दिया जाता है।

आशा है कि यह उत्तर मेरे जैसे नए एंड्रॉइड मधुमक्खियों के लिए कुछ हद तक विस्तार और सहायक होगा। मैंने अभी साझा किया जो मैंने यूआई थ्रेड के बारे में सीखा। अगर मैं कहीं भी गलत हो गया तो कृपया मुझे दोबारा सुधारने में संकोच न करें।

1

हां। मुख्य धागा यूआई धागा है।

पृष्ठभूमि प्रसंस्करण के बारे में पूर्ण विवरण के लिए this tutorial देखें एंड्रॉयड

3

मूल रूप से मुख्य थ्रेड में Ui धागा है।
हालांकि कभी-कभी वे अलग-अलग चल सकते हैं!
विभिन्न थ्रेड पर एकाधिक दृश्यों वाले सिस्टम ऐप्स के लिए यह संभव है।
यदि आप समर्थन एनोटेशन नोट्स का उपयोग करते हैं तो ध्यान दें कि @MainThread और @UiThread दोनों एक ही समय में उपलब्ध हैं।
यहां पहले व्यक्ति के साथ आप ऐप लाइफ चक्र से जुड़े तरीकों को एनोटेट करते हैं और दूसरी पठार के साथ जो पदानुक्रम के प्रभारी हैं।
https://developer.android.com/studio/write/annotations.html

संबंधित मुद्दे