2012-11-11 18 views
10

मैं दो समस्याएं हैं:एंड्रॉयड गतिविधि दूरस्थ सेवा AIDL दो तरह से कनेक्शन

  1. मुझे पता है कि कनेक्शन गतिविधि और रिमोट सेवा के लिए मैं AIDL उपयोग करना होगा। मैंने कोशिश की और यह काम है लेकिन मुझे केवल एक ही रास्ता कनेक्शन उदाहरण मिल सकता है। सरल शब्दों में - सेवा से कुछ पढ़ना (गतिविधि के द्वारा)। लेकिन मुझे गतिविधि (सेवा द्वारा या सेवा) में कुछ डेटा भेजने के लिए हल करने की आवश्यकता है। यह बहुत महत्वपूर्ण है क्योंकि सेवा को कुछ घटनाओं (नेट से डेटा प्राप्त करने) के तुरंत बाद गतिविधि को कुछ जानकारी भेजनी पड़ती है।
  2. क्या दूरस्थ सेवा से फिर से बंद एप्लिकेशन (गतिविधि) लाने का तरीका है?

किसी भी सुझाव की सराहना की जाएगी।

सादर

येरेवान

उत्तर

9

यह बहुत महत्वपूर्ण है क्योंकि सेवा immediatly कुछ अपने आयोजनों (नेट से डेटा प्राप्त) के बाद गतिविधि के लिए कुछ जानकारी भेजने के लिए।

आप दो-तरफा संचार के लिए एआईडीएल का उपयोग कर सकते हैं। आपको न केवल सेवा इंटरफ़ेस, बल्कि कॉलबैक इंटरफ़ेस का खुलासा करना होगा, क्लाइंट के साथ कॉलबैक के .Stub वाले क्लाइंट के साथ और सेवा इंटरफ़ेस पर किसी विधि के पैरामीटर में इसका उदाहरण प्रदान करना होगा। इसमें कुछ समय जटिल हो जाता है - यहाँ है कि तकनीक का प्रदर्शन my book से नमूना क्षुधा की एक जोड़ी हैं:

यह सामने फिर से बंद कर दिया आवेदन करने के लिए लाने के लिए रास्ता नहीं है (गतिविधि) रिमोट सेवा से?

आपकी सेवा startActivity() पर कॉल कर सकती है, लेकिन आम तौर पर यह एक बुरा विचार है। उपयोगकर्ता कुछ और करने के बीच में हो सकता है, जब अचानक आपकी गतिविधि अग्रभूमि में चली जाती है। कभी-कभी, उपयोगकर्ता आपकी गतिविधि को अधिक महत्वपूर्ण मान सकता है, लेकिन हमेशा नहीं। इसके बजाय Notification का उपयोग करने पर विचार करें, उपयोगकर्ता को यह बताने के लिए कि आपके ऐप में कुछ ऐसा है जिसके लिए उपयोगकर्ता का ध्यान रखना आवश्यक है।

+0

अपडेट किया गया लिंक: https: // GitHub।com/commonsguy/cw-omnibus/tree/master/बाध्यकारी/रिमोट –

+0

कॉलबैक का वास्तविक उदाहरण यहां है https://github.com/commonsguy/cw-omnibus/tree/master/Binding/Callback – aramadia

1

सबसे पहले, अपनी सेवा में एक निजी परिणाम प्राप्तकर्ता चर बनाएँ। फिर इस परिणाम-प्राप्तकर्ता को एक कनेक्टेड गतिविधि के माध्यम से सेट करने के लिए एक विधि बनाएं। फिर आपके द्वारा अभी की गई विधि के माध्यम से गतिविधि से चल रही सेवा के परिणामस्वरूप प्राप्तकर्ता को पास करने के लिए एआईडीएल का उपयोग करें। फिर सेवा में परिणामreceiver.send का उपयोग करें यदि परिणाम देने वाला शून्य नहीं है।

कुछ उदाहरण आप आरंभ http://lalit3686.blogspot.com/2012/06/how-to-update-activity-from-service.html?m=1

http://chrisrisner.com/31-Days-of-Android--Day-28 -Intents-भाग -3 पाने के लिए - सेवा-इंटेंट

संबंधित मुद्दे