java दूरस्थ सेवा कॉलबैक प्रबंधित करना



android service (1)

अगर मैं आपको सही समझता हूं, तो आपको जो सभी करना है, वह उसी इंटरफ़ेस का उपयोग करके दूरस्थ कॉलबैक सूची से आपके अनुरोधों का जवाब देना है, लेकिन विभिन्न प्रतिक्रियात्मक डेटा संरचनाओं के साथ।

मुझे लगता है, सबसे आसान तरीका है कि आपको ये जानकारी लाने के लिए अनुरोध करना है कि वे किस प्रकार की वापसी वाली डेटा संरचना चाहते हैं। सबसे स्पष्ट (शायद बेवकूफ भी) - आपको उस क्लास का नाम भेजना है जिसे आप इन्स्तांत करना और भरना है। अधिक परिष्कृत तरीके से आप कुछ गणना कर सकते हैं जो आइटम नाम अनुरोध से लाया जाना चाहिए और जो उचित तरीके से परिभाषित करेगा डेटा संरचना वर्ग को तत्काल और लौटाया जाना

दूसरा तरीका किसी तरह का प्रतिसाद रिज़ॉल्वर होना है - कुछ तर्क यह पता लगाएगा कि किस प्रकार का डेटा अनुरोध कर सकता है लेकिन आईएमएचओ यह बहुत अस्पष्ट, बहुत जटिल और समर्थन करने के लिए बहुत सुविधाजनक नहीं है।

फिर भी - यह काफी संदिग्ध है कि आपको इस तरह के मामले के लिए कुछ सार्वभौमिक समाधान मिलेगा, क्योंकि यह एक सामान्य नहीं है।

उम्मीद है की यह मदद करेगा।

https://code.i-harness.com

मेरे पास एक ऐसी स्थिति है जहां मुझे लगता है कि मैं पहिया को फिर से बदलने या घरों के चारों ओर घूमने के लिए तैयार हूँ, ऐसा कुछ संभाल करने के लिए कि पहले से ही एक 'डिजाइन' है - ऐसा करने से पहले, मुझे उम्मीद थी कि मुझे दूसरा राय मिल सकती है ।

मेरे पास एक दूरस्थ सेवा है आवेदन की ही असामान्य प्रकृति / कार्यक्षमता के कारण यह एक स्थायी अग्रभूमि सेवा है

मैं एक पुस्तकालय लिख रहा हूं ताकि तीसरी पार्टी के अनुप्रयोग सेवा से जुड़ा हो और एपीआई का उपयोग कर सकें जो मैं दिखाता हूं। जैसा कि मैं अपने आप को थ्रेडिंग से निपट रहा हूं और अधिकांश कॉलबैक एक अतुल्यकालिक प्रकृति का हो जाएगा, मैं एआईडीएल दृष्टिकोण का उपयोग कर रहा हूं, कस्टम क्लास के साथ जो सेवा के लिए आवश्यक पैरामीटर प्रदान करने के लिए 'पार्सल अप' हैं सब कुछ अब तक, पूरी तरह से काम कर रहा है।

मेरा सर्विस कोड का निर्माण दूरस्थ से सेवा एपीआई उदाहरण के समान है, इसलिए मैं इसका उल्लेख करता हूं, मेरा विशिष्ट कोड पोस्ट करने से प्रश्न बदल नहीं होता है।

उदाहरण के साथ , प्रत्येक अनुरोध का इंटरफ़ेस मैं एक रिमोट कॉलबैक लिस्ट में सहेजता हूं, जो कुछ अन्य मूल सिद्धांतों का एक आसान समाधान है।

हालांकि, मेरी सेवा 'प्रतीक्षा रिसीवर्स' के समूह को एक ही जानकारी प्रदान नहीं करती है क्योंकि निम्न स्निपेट का उपयोग दर्शाता है:

 int i = callbacks.beginBroadcast();
 while (i > 0) {
     i--;
     try {
         callbacks.getBroadcastItem(i).somethingHappened();
     } catch (RemoteException e) {
         // The RemoteCallbackList will take care of removing
         // the dead object for us.
     }
 }
 callbacks.finishBroadcast();

इसके बजाय, अनुरोध कई अलग-अलग प्रकार के होते हैं और इसलिए मुझे ट्रैक करने की आवश्यकता है कि सटीक इंटरफ़ेस ऑब्जेक्ट मैं वापस परिणाम भेजने के लिए कैसे हूं। प्रत्येक व्यक्तिगत अनुरोध में आगे अतुल्यकालिक वेब अनुरोध और / या प्रोसेसिंग शामिल हो सकते हैं और इनमें से प्रत्येक के लिए कॉलबैक ऑब्जेक्ट (या तो एक कन्स्ट्रक्टर या सिर्फ एक विधि पैरामीटर के माध्यम से) को हाथ में रखना है, जहां मुझे लगता है कि मैं बहुत थकाऊ काम करना चाहता हूं एक समस्या का समाधान करने के लिए लंबे समय तक घुमावदार है जिसे मैं आसानी से एक और तरीके से प्राप्त कर सकता हूं?

यह काम आसान होगा यदि मैं गारंटी दे सकता हूं कि पहला अनुरोध पहले का परिणाम होगा और इसलिए उनके संदर्भ को हटाने से पहले ही रिमोट कॉलबैक सूची में आदेश का उपयोग करें, लेकिन यह मामला नहीं है, अलग-अलग प्रसंस्करण समय के कारण अलग अनुरोध प्रकारों का

संपादित करें - ऐसा लगता है कि रिमोट कॉलबैक सूची को एक अर्रेमैप द्वारा समर्थित किया जाता है और इसलिए मुझे विश्वास है कि वैसे भी कोई आदेश नहीं दिया गया है?

रिमोट कॉलबैक लिस्ट में कॉलबैक उत्पन्न होने पर मुझे कोई संक्षिप्त दस्तावेज नहीं मिल पाया है, हालांकि भले ही मैं कर सकता था, मुझे अभी भी किसी प्रकार की लगातार पहचानकर्ता की ज़रूरत है, यह जानने के लिए कि मैं क्या चाहता हूं .... स्टंप

इसे पढ़ने के लिए धन्यवाद, किसी भी विचार का स्वागत है

संपादित करें - छद्म उदाहरण के उद्देश्य के लिए कल्पना कीजिए कि एपीआई अनुरोध पुस्तकों के बारे में हैं।

// requests
bookExists(String title)
bookContent(String title)

// response
bookExists(boolean exists)
bookContent(ArrayList<String> words, int pageTotal)

जैसा कि आप ऊपर से देख सकते हैं, सभी चीजें समान हैं, एक छोटी किताब या किसी किताब के अस्तित्व के लिए एक रिमोट अनुरोध, एक लंबी किताब के अनुरोध से पूर्व जवाब देने के लिए तैयार हो सकता है, भले ही उसके बाद अनुरोध किया गया हो। यह वह जगह है जहां मुझे 'अनुरोधकर्ता' को ट्रैक करने की आवश्यकता है और वह डिजाइन है जिसके बाद मैं हूं।





aidl