2009-08-24 8 views
17

मेरे पास एक सेवा है जो एक फ़ाइल डाउनलोड कर रही है। जब डाउनलोड किया जाता है, तो मैं अपने Activity में अपनी "डाउनलोड की गई फ़ाइलें" सूची अपडेट करना चाहता हूं, लेकिन केवल Activity चल रहा है। मैं Activity नहीं शुरू करना चाहता हूं कि यह पहले से चल रहा है या नहीं।किसी गतिविधि को अपडेट करने के इरादे का उपयोग कैसे करें?

मुझे उम्मीद थी कि मैं कुछ विशेष ध्वज के साथ एक नया Intent बनाकर ऐसा कर सकता हूं।

किसी को भी कोई विचार है कि मैं इसे कैसे प्राप्त कर सकता हूं? शायद एक छोटा कोड उदाहरण हो सकता है?

उत्तर

19

आप नए BroadcastReceiver उदाहरण बना सकते हैं और अपने गतिविधि के onResume पर इन पंक्तियों के साथ कुछ करना() विधि:

registerReceiver(myReceiver, new IntentFilter(DownloadService.ACTION_FILE_DOWNLOADED)); 

उसके बाद, myReceiver के onReceive() विधि ओवरराइड एक समारोह है कि घटक आप चाहते हैं अद्यतन करता है कॉल करने के लिए :

unregisterReceiver(myReceiver); 
:

@Override 
public void onReceive(Context context, Intent intent) { 
... 
    updateViewWithData(service.getNewFileData()); 
... 
} 

अपनी गतिविधि के onPause पर() विधि, बस रिसीवर अपंजीकृत

मुझे आशा है कि इससे आपकी मदद मिलेगी, यह पूछने में संकोच न करें कि कुछ अस्पष्ट है या नहीं।

+0

यह बहुत अच्छा तरीका:

इस दृष्टिकोण का एक उदाहरण के लिए Android SDK में RemoteService.java पर एक नज़र संचार काा। लेकिन परिणाम वितरित किए जाने पर क्या करना है, जब गतिविधि रोका गया राज्य था? तो रिज्यूम गतिविधि के बाद परिणाम के लिए लंबे समय तक इंतजार कर सकते हैं। और कोई डेटा प्राप्त नहीं होगा, क्योंकि डेटा याद किया गया था। –

3

ऐसा करने का अच्छा तरीका सेवा में आपकी "डाउनलोड की गई फ़ाइलें" गतिविधि को बाध्य करना है। जब आप सर्विस को कनेक्ट करते हैं, तो सेवा से कनेक्ट होने पर फ़ंक्शन में, बाइंडर कॉलबैक पंजीकृत करें। फिर, जब भी आपके पास नया डेटा उपलब्ध हो, सेवा केवल उस कॉलबैक को कॉल करती है। यदि गतिविधि नहीं चल रही है, तो सेवा पक्ष में कॉलबैक सूची खाली होगी, इसलिए यह आपकी गतिविधि को सूचित नहीं करेगी।

नमूने \ ApiDemos \ src \ कॉम \ उदाहरण \ एंड्रॉयड \ apis \ एप्लिकेशन \

+0

डिमिटार डिमिट्रोव जैसे इरादे मैसेजिंग की तुलना में इसका क्या फायदा होगा? धन्यवाद – urSus

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

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