2010-02-17 4 views
9

यह मेरे Activity में कोड है। इरादा आरंभ करें, फिर कनेक्शन, सही?मैं एंड्रॉइड में इस सेवा को कैसे बांधूं?

hello_service = new Intent(this, HelloService.class); 
hello_service_conn = new HelloServiceConnection(); 
bindService(hello_service, hello_service_conn, Context.BIND_AUTO_CREATE); 

लेकिन मेरा सवाल है ... कनेक्शन के अंदर क्या होता है?

class HelloServiceConnection implements ServiceConnection { 
     public void onServiceConnected(ComponentName className,IBinder boundService) { 

     } 
     public void onServiceDisconnected(ComponentName className) { 

     } 
    }; 

कोई मुझे बता सकते हैं कि कोड मैं में डाल दिया onServiceConnected और onServiceDisconnected?

मुझे बस एक बुनियादी कनेक्शन चाहिए ताकि मेरा Activity और Service एक-दूसरे से बात कर सके।

संपादित करें: मुझे एक अच्छा ट्यूटोरियल मिला, और मैं वास्तव में इस प्रश्न को बंद कर सकता हूं, जब तक कोई जवाब देना नहीं चाहता। http://www.androidcompetencycenter.com/2009/01/basics-of-android-part-iii-android-services/

उत्तर

16

मैं कहना है कि यदि आप गूगल द्वारा प्रदान की सेवा उदाहरणों का अनुसरण तो आपकी सेवा स्मृति रिसाव हो जाएगा, यह (संबंधित Google बग के लिए और वोट) कैसे ठीक ऐसा करने पर उत्कृष्ट पोस्ट chaps देखना चाहते हैं

http://www.ozdroid.com/#!BLOG/2010/12/19/How_to_make_a_local_Service_and_bind_to_it_in_Android

+3

इस लेख के लिए लिंक उपलब्ध नहीं है, लेकिन यह पर पाया जा सकता: http://www.mongrel-phones.com.au/default/how_to_make_a_local_service_and_bind_to_it_in_android –

+0

लिंक देना अब मर चुका है – PKTomar

4

एक गतिविधि से एक सेवा के लिए बाइंडिंग के रूप में यह probems का कारण बनता है जब गतिविधि विन्यास परिवर्तन (जैसे अगर डिवाइस घुमाया जाता है गतिविधि फिर से खरोंच से बनाया जायेगा और होता बंधन फिर से होने की परहेज किया जाना चाहिए बनाया था)।
कृपया stackoverflow
Communicate with Activity from Service (LocalService) - Android Best Practices

1

पर निम्नलिखित पोस्ट पर Commonsware से टिप्पणी का उल्लेख एक गतिविधि को किसी सेवा से कनेक्ट करने के लिए, तुम सब एक ServiceConnection कार्यान्वयन में लिखने की ज़रूरत है:

@Override 
public void onServiceDisconnected(ComponentName name) { 
mServiceBound = false; 
} 

@Override 
public void onServiceConnected(ComponentName name, IBinder service) { 
MyBinder myBinder = (MyBinder) service; 
mBoundService = myBinder.getService(); 
mServiceBound = true; 
} 

यहाँ mBoundService आपकी बाध्य सेवा का एक वस्तु है। इस Bound Service Example पर एक नज़र डालें।