2011-10-12 11 views
5

क्या कोई मुझे बता सकता है कि एंड्रॉइड में केवल यूआई थ्रेड यूआई अपडेट क्यों कर सकता है? कोई अन्य थ्रेड यूआई अपडेट क्यों नहीं कर सकता है?एंड्रॉइड में केवल यूआई थ्रेड यूआई अपडेट क्यों कर सकता है?

+2

जिस तरह से मैंने कभी देखा है लगभग हर यूआई ढांचे ... –

+2

देखें: http://stackoverflow.com/questions/5544447/why-are-most-ui-frameworks-single-threaded – Boann

उत्तर

8

Documentation राज्यों ब्लॉक यूआई धागा बाहर से Android यूआई टूलकिट का उपयोग न करें न करें कि एंड्रॉयड यूआई टूलकिट है thread-safe नहीं। इस प्रकार, एकल धागा मॉडल सुनिश्चित करता है कि यूआई एक ही समय में विभिन्न धागे द्वारा संशोधित नहीं किया गया है।

3

थ्रेड के बारे में android developper गाइड में बताया गया है:

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

इसके अतिरिक्त, एंडॉइड यूआई टूलकिट थ्रेड-सुरक्षित नहीं है। तो, आपको एक कार्यकर्ता थ्रेड से अपने यूआई में हेरफेर नहीं करना चाहिए- आपको यूआई थ्रेड से अपने यूजर इंटरफेस में सभी मैनिपुलेशन करना होगा। इस प्रकार, बस Android के एकल थ्रेड मॉडल के लिए दो नियम हैं:

यूआई धागा

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