2012-02-09 16 views
5

में सिंक्रोनस सेवा कॉल मैं उस एप्लिकेशन पर काम कर रहा हूं जिसका मुख्य उत्तरदायित्व दूरस्थ सर्वर से संपर्क करना और प्रदान किए गए डेटा को प्रदर्शित करना है।एंड्रॉइड

सेवा साबुन आधारित है। इसके लिए मैं ksoap लाइब्रेरी का उपयोग करता हूं, लेकिन चलिए मामले में कटौती करते हैं।

मैं असीमित कार्यों के उपयोग के साथ "कॉलिंग सेवा" कर रहा हूं। सबकुछ अच्छी तरह से जाना प्रतीत होता था, लेकिन ...

सेवा अनुक्रमिक है, और मेरे अनुरोधों को 'खो देता है', इसलिए मुझे उचित परिणाम नहीं मिलते हैं।

तो मैं इस मुद्दे को हल करने के लिए एक तुल्यकालिक दृष्टिकोण लेने का फैसला किया है, लेकिन इस तरह से मैं अतिरिक्त लोड हो रहा है बटन/सलाखों आदि

प्रदर्शन इस तरह से भयानक है प्रदान करते हैं। ऐसे मामले को संभालने का सबसे अच्छा तरीका क्या है? मैं किस तरह का सिंक्रनाइज़ेशन का उपयोग कर सकता हूं ताकि अनुरोधों के बीच कोई दौड़ न हो?

मैं एंड्रॉइड सेवाओं का उपयोग कैसे कर सकता हूं? वे बेहतर कैसे हैं?

उत्तर के लिए अग्रिम धन्यवाद।

+0

क्यों आप क्रमिक रूप से AsyncTasks निष्पादित नहीं देखें, और वे सफल रहे हैं केवल तो क्या होगा? – dmon

+0

अनुक्रमिक रूप से उन्हें कॉल करके वास्तव में आपका क्या मतलब है? – Olek

उत्तर

15

आप वास्तव में एक सिंक तरह से AsyncTask कॉल कर सकते हैं:

class MyTask extends AsyncTask<Void,Void,String> 
{...} 

MyTask x = new MyTask(); 
String result = x.execute().get(); 

docs page के लिए AsyncTask

+1

त्वरित प्रतिक्रिया के लिए धन्यवाद। क्या आपने इसे स्वयं की कोशिश की है? तो यह प्राप्त करने के लिए कह रहा है() मुझे लगता है कि यह बस उस थ्रेड पर() को कॉल करता है जो इसे निष्पादित करता है। क्या() यूआई या अन्य कार्यों को निलंबित नहीं करेगा? क्या कार्य कतार को नियंत्रित करने के लिए कोई अंतर्निहित तंत्र है? – Olek

+0

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

+0

असल में मैं यूआई को फ्रीज नहीं करना चाहता हूं। और मैं इससे बचने के लिए एक रास्ता तलाश रहा हूं। मैं अधिकांश कार्यों के सिंक्रनाइज़ेशन का एक तरीका ढूंढ रहा हूं। – Olek