अगर मैं एक HandlerThread (अपने Looper हैंडलर के पास) का उपयोग नहीं करते, कि इस मामले हैंडलर में मतलब है MainThread (यूआई धागा) का उपयोग के Looper मिल सकती है?
Handler
Handler()
डिफ़ॉल्ट निर्माता सहयोगियों वर्तमान थ्रेड के लिए Looper के साथ इस हैंडलर के प्रलेखन पर एक नज़र डालें।
यदि आपका वर्तमान थ्रेड मेन थ्रेड है, तो यह मेन थ्रेड (यूआई थ्रेड) लूपर का उपयोग करता है।
स्पष्ट रूप से हैंडलर को अपने मेन थ्रेड (यूआई थ्रेड) में जोड़ने के लिए, नीचे कोड लिखें।
Handler mHandler = new Handler(Looper.getMainLooper();
आप लिखते हैं, जैसा कि नीचे है, तो यह HandlerThread Looper उपयोग करता है।
HandlerThread handlerThread = new HandlerThread("HandlerThread");
handlerThread.start();
Handler requestHandler = new Handler(handlerThread.getLooper());
आप Runnable
कार्य में किसी भी नेटवर्क आईओ आपरेशन है, तो आप मुख्य धागा looper उपयोग नहीं कर सकते। उस स्थिति में, HandlerThread
Runnable
कार्य करने के लिए काम कर रहा है नेटवर्क आईओ ऑपरेशन प्रदर्शन।
आप उदाहरण कोड @How do I fix android.os.NetworkOnMainThreadException?
अगर हैंडलर MainThread के Looper का उपयोग करता है क्या परिणाम मिल जाएगा मिल सकती है? मुख्य थ्रेड अवरुद्ध हो सकता है?
यदि आप मेन थ्रेड लूपर को कई ईवेंट भेजते हैं, तो वे मेन थ्रेड (यूआई थ्रेड) पर ही निष्पादित होंगे। यदि सबमिट किए गए कार्यों में निष्पादन के लिए अधिक समय लग रहा है, तो मेन थ्रेड को अवरुद्ध कर दिया जाएगा। Looper के आंतरिक भागों के लिए पोस्ट के नीचे
की जांच:
What is the purpose of Looper and how to use it?
स्रोत
2017-02-11 18:12:58
यह आधिकारिक डॉक्स है। एक नया धागा शुरू करने के लिए हैंडी क्लास जिसमें लूपर है। लूपर का उपयोग हैंडलर कक्षाएं बनाने के लिए किया जा सकता है। ध्यान दें कि प्रारंभ() अभी भी कॉल किया जाना चाहिए। 'मैंने आपका समय बचाया। – UnKnown