2011-01-31 17 views
12

के रूप में मुझे पता है कि BroadcastReceiver का उपयोग गतिविधि के आंतरिक वर्ग के रूप में परिभाषित नहीं किया जा सकता है। लेकिन मुझे आश्चर्य है क्यों? क्या ऐसा इसलिए है क्योंकि सिस्टम को एक रिसीवर इंस्टेंस को तुरंत चालू करने के लिए बड़ी Activity ऑब्जेक्ट को तुरंत चालू करना होगा?ब्रॉडकास्ट रिसीवर आंतरिक वर्ग

उत्तर

26

... क्योंकि सिस्टम को एक बड़ी गतिविधि ऑब्जेक्ट को तुरंत चालू करने के लिए एक रिसीवर इंस्टेंस को इंस्टाल करना होगा?

यूप, किसी भी अन्य गैर स्थैतिक आंतरिक वर्ग की तरह। इसे (बाहरी स्थैतिक) आंतरिक वर्ग के उदाहरण बनाने से पहले इसे कहीं से बाहरी वर्ग का उदाहरण प्राप्त करना होगा (उदा। तत्काल या किसी अन्य तंत्र द्वारा)।

वैश्विक प्रसारण रिसीवर जो मैनिफेस्ट फ़ाइल में इरादों से आते हैं जिन्हें सिस्टम द्वारा स्वचालित रूप से तत्काल किया जाएगा, प्रसारण रिसीवर गैर स्थैतिक आंतरिक वर्ग का उदाहरण बनाने के लिए उपयोग करने के लिए ऐसा कोई बाहरी उदाहरण नहीं है। यह बाहरी वर्ग, गतिविधि या नहीं से स्वतंत्र है।

हालांकि, यदि आप एक गतिविधि के साथ काम करने के हिस्से के रूप में एक रिसीवर का उपयोग कर रहे हैं, तो आप गतिविधि में अपने आप को प्रसारण रिसीवर को मैन्युअल रूप से चालू कर सकते हैं (जबकि गतिविधि कॉलबैक में से एक, आपके पास बाहरी वर्ग का एक उदाहरण है जिसके साथ काम करना है : this) और फिर रजिस्टर/यह अपंजीकृत के रूप में उपयुक्त:

public class MyActivity extends Activity { 

    private BroadcastReceiver myBroadcastReceiver = 
     new BroadcastReceiver() { 
      @Override 
      public void onReceive(...) { 
       ... 
      } 
     }); 

    ... 

    public void onResume() { 
     super.onResume(); 
     .... 
     registerReceiver(myBroadcastReceiver, intentFilter); 
    } 

    public void onPause() { 
     super.onPause(); 
     ... 
     unregisterReceiver(myBroadcastReceiver); 
    } 
    ... 
} 
+0

मैं के रूप में मैं ऑनलाइन कुछ उदाहरण में देखा था आप का सुझाव के रूप में (और यह भी एक आंतरिक वर्ग का उपयोग करने की कोशिश की है): https://gist.github.com/डेविडोरिया/80c9c5dc98913b54bf00 लेकिन जब मैं अपने डिवाइस को घुमाता हूं तो ऑनसेसिव नहीं कहा जाता है। कोई सुझाव? –

+3

बर्ट यह बाहरी वर्ग वस्तु धारण करके किसी भी स्मृति रिसाव की ओर जाता है ?? –

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