2011-07-30 21 views
5

मेरे पास एक गतिविधि है जो सर्वर से प्राप्त कुछ डेटा प्रदर्शित करती है। यदि कोई कनेक्शन उपलब्ध नहीं है, तो गतिविधि कुछ कैश किए गए डेटा प्रदर्शित करती है; यदि कनेक्शन उपलब्ध है, तो गतिविधि डेटा प्राप्त करती है और इसे प्रदर्शित करती है। यह सभी उम्मीद के अनुसार काम करता है।
अब, जैसे ही कनेक्शन होता है, मैं अपनी गतिविधि को डेटा को फिर से लोड करना चाहता हूं।एंड्रॉइड गतिविधि और प्रसारण रिसीवर के बीच संवाद

इस प्रकार
public class ConnectionChangeReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     ConnectivityManager connectivityManager = (ConnectivityManager) context 
       .getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo(); 
     if (activeNetInfo != null) { 
      //what to do here? 
     } 
    } 
} 

प्रसारण रिसीवर मेरी मैनिफ़ेस्ट फ़ाइल में घोषित किया जाता है:

:

<receiver android:name=".ConnectionChangeReceiver" 
      android:label="NetworkConnection"> 
     <intent-filter> 
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> 
     </intent-filter> 
</receiver> 

मेरी गतिविधि में, मैं रिसीवर रजिस्टर मैं एक साधारण रिसीवर कि BroadcastReceiver फैली उपयोग कर रहा हूँ

कनेक्शनChangeReceiver रिसीवर = नया कनेक्शनChangeReceiver(); this.registerReceiver (रिसीवर, नया IntentFilter (कनेक्टिविटीमैनेजर। कॉनएक्टिविटी_एक्शन));

अब, मैं उलझन में हूं कि आगे क्या करना है। जब ऑनसाइट विधि को निष्पादित किया जाता है, तो मेरी गतिविधि को इसके बारे में कैसे जागरूक किया जाए? मुझे पता है कि मैं एक नई गतिविधि शुरू कर सकता हूं, लेकिन यह वास्तव में मैं नहीं चाहता हूं। क्या मुझे अपनी गतिविधि के निजी वर्ग के रूप में कनेक्शनChangeReceiver घोषित करना चाहिए? या कोई अन्य समाधान है?

+1

उस गतिविधि के अंदर कनेक्शन चेंज रिसीवर क्लास बनाएं जिसे आप कनेक्शन के बारे में जागरूक करना चाहते हैं, रेसीसीव के अंदर, कनेक्टिविटी सिग्नल प्राप्त करने के बाद यूआई भागों को अपडेट करें। – sat

उत्तर

11

मुझे लगता है कि रिसीवर को आपकी गतिविधि के निजी उप-वर्ग के रूप में बनाना यहां जाने का तरीका है। इस तरह आप अपनी गतिविधि से घटनाओं और डेटा को नियंत्रित कर सकते हैं। फिर आप इसके बारे में एक उदाहरण बना सकते हैं और रिसीवर को कोड से पंजीकृत कर सकते हैं जैसा आपने ऊपर किया था।

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

+0

स्पष्टीकरण के लिए बहुत बहुत धन्यवाद। – Maggie

+0

+1 स्पष्टीकरण के लिए धन्यवाद। – AgentKnopf

+0

लेकिन अगर मैं प्रसारण रिसीवर को गतिविधि में नहीं रखना चाहता हूं .. ?? ऐसा करने का कोई और तरीका .. ?? –

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