मेरे एंड्रॉइड ऐप की सर्विस क्लास में एक आरईएसटी वेब सेवा पर कॉल करना NetworkOnMainThreadException
बनाएं।एंड्रॉइड: किसी सेवा में नेटवर्क का उपयोग
मुझे समझ में आता है कि इस अपवाद को गतिविधि में क्यों उठाया गया है: नेटवर्क पर कुछ सिंक्रनाइज़ेशन करना बेहद खराब अभ्यास है, लेकिन मुझे सेवा कक्षा में वही त्रुटि देखने में आश्चर्य हुआ। तो मेरा सवाल है:
- इस विशिष्ट मामले में, क्या मुझे इस कॉल को अनुमति देने के लिए StrictMode.setThreadPolicy()
का उपयोग करना चाहिए।
-या मैं एक AsyncTask का उपयोग करना चाहिए (और उन है कि यह पढ़ क्योंकि वे एक गतिविधि में इस त्रुटि का सामना करना पड़ा है, StrictMode का उपयोग नहीं करते इस त्रुटि को छुपाने के लिए, एक AsyncTask का उपयोग करें)? और उस मामले में, यहां क्या मुद्दा है? क्या गतिविधि के एक से अलग धागे पर सेवा नहीं है?
आपके उत्तर के लिए धन्यवाद, इसलिए मुझे यही संदेह है। मुझे लगता है कि चूंकि वे पृष्ठभूमि कार्यों के लिए उपयोग किए जाते हैं, इसलिए सेवा डिफ़ॉल्ट रूप से किसी अन्य धागे पर होगी, लेकिन ऐसा नहीं है। असल में मैं 'मीडियाप्लेयर' पर कॉल प्रबंधित करने के लिए उस सेवा का उपयोग करता हूं, इसलिए इसे मुख्य थ्रेड पर रखना ऐसा नहीं लगता है क्योंकि 'readyAsync()' मुझे अपने व्यवहार को सुंदर ढंग से प्रबंधित करने की अनुमति देता है। स्ट्रीमिंग यूआरएल प्राप्त करने के लिए मुझे 'AsyncTask' का उपयोग करने के लिए बस अपनी सेवा को संशोधित करना होगा। – Teovald
अच्छा उत्तर, यहां तक कि सामग्रियां भी उपलब्ध हैं जो आपको यह समझने में सहायता करेंगी कि नेटवर्क का कुशलतापूर्वक उपयोग कैसे किया जाए, यह सुनिश्चित करने के लिए कि आपका ऐप अनुकूलित है। http://developer.att.com/developer/forward.jsp?passedItemId=7200042 –