2010-05-16 8 views
7

मैं एक गतिविधि (ए) और एक सेवा (एस) जो इस तरह एक के द्वारा शुरू किया जाता है:एंड्रॉइड में: सेवा से गतिविधि का फ़ंक्शन कैसे कॉल करें?

Intent i = new Intent(); 
i.putExtra("updateInterval", 10); 
i.setClassName("com.blah", "com.blah.S"); 
startService(i); 

एक एक में इस प्रकार के एक समारोह है:

public void someInfoArrived(Info i){...} 

अब मैं चाहता हूँ एस। इंटेंट.पूट एक्स्ट्रा में कोई संस्करण नहीं है जहां मैं ऑब्जेक्ट रेफरेंस इत्यादि पास कर सकता हूं ... कृपया मदद करें!

पीएस: दूसरी तरफ (नई जानकारी के लिए एक मतदान एस) मुझे जो चाहिए वह नहीं है। मुझे यह कैसे करना है इसके बारे में पर्याप्त जानकारी मिली।

उत्तर

14

एक विकल्प startService() से bindService() पर स्विच करना और स्थानीय बाध्यकारी पैटर्न का उपयोग करना है। फिर, आपको किसी श्रोता या कॉलबैक विधि को पंजीकृत करने के लिए किसी बिंदु पर एस पर एक विधि कॉल करने की आवश्यकता है। फिर, एस के पास कुछ ऐसा होगा जो कुछ जानकारी प्राप्त करता है जब कुछ जानकारी आती है। आप here के लिए नमूना प्रोजेक्ट देख सकते हैं।

वैकल्पिक रूप से, आप जगह पर startService() छोड़ सकते हैं और कुछ जानकारी प्राप्त करने के बारे में एस को बताने के लिए प्रसारण Intent का उपयोग कर सकते हैं। आप इस तरह के प्रसारण Intenthere का प्रदर्शन करने वाला नमूना प्रोजेक्ट देख सकते हैं।

+1

धन्यवाद, यही वही है जो मैं ढूंढ रहा था! मंचों में मेरी उम्मीदें और विश्वास बहाल कर दिया गया है :) – nex

+0

बस अपना दूसरा सुझाव लागू किया और यह एक आकर्षण की तरह काम करता है। एक बार फिर धन्यवाद! – nex

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

  • कोई संबंधित समस्या नहीं^_^