यही है, मेरे पास ब्रॉडकास्ट रिसीवर है जो मैं एक ब्रॉडस्टास्ट सुनने के लिए फ्लाई पर बना हूं, जिसके बाद मैं इसे खुद को अपंजीकृत करना चाहता हूं।क्या रिसीवर की अपनी ऑनसाइट() विधि से 'गतिशील' ब्रॉडकास्ट रिसीवर को अपंजीकृत करना ठीक है?
मुझे ऐसा कोई नमूना कोड नहीं मिला है जो इस तरह से करता है, लेकिन न ही मुझे एंड्रॉइड ऑनलाइन दस्तावेज़ों में कोई नियम मिला है जो इसे रोकता है। लेकिन मैं गतिविधि के लिए इसे चारों ओर लटका नहीं दे सकता, और यह किसी भी अज्ञात वर्ग में है, इसलिए युक्त वर्ग को चर नाम भी नहीं पता है।
है, कोड इस तरह दिखता है:
myInfoReceiver = new BroadcastReceiver() {
onReceive(Context ctx, Intent intt) {
// do some Notification when I get here
nm.notify("I got here") // obvious pseudo code
ctx.unregisterReceiver(myInfoReceiver);
} // end onReceive
ctx.registerReceiver),uInfoReceiver, new IntentFilter(...));
}; // end BroadcastReceiver
लेकिन जब मैं इस चलाने के लिए, एंड्रॉयड शिकायत जब यह अपंजीकृत कहता है, यह कहा गया कि रिसीवर वहाँ (मैं सटीक शब्द भूल पंजीकरण रद्द करना नहीं है, लेकिन यह IllegalArgumentException फेंक दिया)।
मैंने यह भी जांचने के लिए कोड को संशोधित करने का प्रयास किया कि 'इंट' में कार्रवाई अपेक्षित है - लेकिन फिर भी यह अभी भी निष्पादित है लेकिन चुपचाप अपंजीकृत करने में विफल रहता है।
क्या लक्ष्य आप करते हैं हासिल करना चाहते हैं? मुझे लगता है, 'ब्रॉडकास्ट रिसीवर' आपकी समस्या के लिए गलत विकल्प हो सकता है। यदि आप एक बार कुछ ऑपरेशन करना चाहते हैं और आप इसे गतिविधि जीवन चक्र से स्वतंत्र बनाना चाहते हैं, तो ईवेंट बस (उदा। ओटो) के साथ 'इरादा सेवा' या 'सेवा' का उपयोग करने पर विचार करें। –
मैंने इराद सेवा आदि का उपयोग नहीं किया होगा क्योंकि बड़ी प्रणाली का यह हिस्सा पहले से ही एक प्रसारण उद्देश्य है जो मुझे इच्छित जानकारी का प्रतिनिधित्व करता है। इसके अलावा, मुझे जीवन चक्र से इतनी स्वतंत्रता की आवश्यकता नहीं है। मैं पहले से ही यूआई थ्रेड पर इस इरादे की प्रतीक्षा कर रहा हूं, कुछ भी नहीं कर रहा हूं लेकिन एक प्रगति संवाद दिखा रहा हूं। –