मेरे पास मेरे प्रोजेक्ट में कई गतिविधि उप-वर्ग हैं, प्रत्येक एक एसओएपी आधारित वेब सेवा, प्रसंस्करण और परिणामों को प्रदर्शित करता है। एसओएपी क्रमबद्धता, कॉल हैंडलिंग और परिणामस्वरूप विभिन्न पीओजेओ वस्तुओं में पार्सिंग MyWebService क्लास में encapsulated है। यह वर्ग वास्तविक वेब सेवा कॉल को AsyncTask के माध्यम से निष्पादित करता है।पैटर्न कई एंड्रॉइड पर एंड्रॉइड AsnycTask का पुन: उपयोग करने के लिए पैटर्न?
कॉलिंग गतिविधि उपclass में परिणामों को वापस करने में सक्षम होने के लिए, मैंने सोचा कि मैं इन सभी गतिविधियों को एक WebServiceResultProcessor इंटरफ़ेस को कार्यान्वित करना चाहिए, एक एकल फ़ंक्शन (processWebServiceResults) को परिभाषित करना चाहिए जो AsyncTask के लिए कॉलबैक के रूप में कार्य करता है, जिसेपोस्टएक्सक्यूट से बुलाया जाता है ।
मैं वेब सेवा कॉल के दौरान एक प्रोग्रेसडिअलॉग भी प्रदर्शित करना चाहता हूं। और यहाँ मेरा सवाल आता है। प्रोग्रेसडिअलॉग (या तो MyWebService या इसके AsyncTask से) को प्रदर्शित करने में सक्षम होने के लिए, मुझे कॉलर गतिविधि के संदर्भ का संदर्भ पारित करने की आवश्यकता है। और AsyncTask से कॉलबैक फ़ंक्शन निष्पादित करने में सक्षम होने के लिए, मैं भी को उसी ऑब्जेक्ट संदर्भ को पास करने की आवश्यकता है, लेकिन इस बार WebServiceResultProcessor के रूप में। यह मुझे एक कोड गंध लगता है, एक ही वस्तु को दो बार गुजर रहा है, लेकिन उसके चारों ओर किसी भी तरह से नहीं देख सकता है। इंटरफेसिंग के बजाय, मैं एक नई बेस क्लास बना सकता हूं, गतिविधि वर्ग का विस्तार कर सकता हूं और एक्सटेंशन क्लास से विरासत को लागू कर सकता हूं, लेकिन इसका मतलब यह होगा कि मैं ListActivity और इस MyWebService क्लास का उपयोग करने से पसंद को बाहर कर दूंगा।
क्या ऐसा करने का कोई बेहतर तरीका है?
अपने WebServiceResultProcessor का विस्तार करता है प्रसंग/गतिविधि? –
@HeikoRupp नहीं, और शायद मैं इसे इस तरह से रखना पसंद करूंगा। –