हम जब एक पर एक लंबे प्रेस कर रही इस त्रुटि को देखा है विशेष स्क्रीन, और फिर तुरंत दो अभिविन्यास परिवर्तन कर रहे हैं (उदाहरण के लिए डिवाइस को उल्टा करना)।
unregisterReceiver के लिए एपीआई डॉक्स का कहना है:
अपंजीकृत एक पहले से पंजीकृत BroadcastReceiver।
यह स्पष्ट रूप से नहीं कहता है, लेकिन जैसा कि आपने देखा है, तो आपने IllegalArgumentException: Receiver not registered
मारा है यदि यह पहले से पंजीकृत नहीं है।
मैं जिस कामकाज का उपयोग कर रहा हूं वह मेरे रिसीवर को सदस्य क्षेत्र के रूप में स्टोर करना है, और जब भी यह पंजीकृत नहीं होता है, तो यह शून्य हो जाता है, यानी मैं इसे शून्य करने के लिए प्रारंभ करता हूं, और फिर इसे पंजीकृत करते समय इसे सेट करता हूं। यह सही नहीं हो सकता है, लेकिन यह मेरी दुर्घटनाओं को हल करता है!
private Receiver mReceiver = null;
से
मेरी onServiceConnected:
sLog.debug("Registering receiver");
mReceiver = new Receiver();
registerReceiver(mReceiver, filter);
से मेरी onServiceDisconnected:
if (mReceiver == null)
{
sLog.info("Do not unregister receiver as it was never registered");
}
else
{
sLog.debug("Unregister receiver");
unregisterReceiver(mReceiver);
mReceiver = null;
}
स्रोत
2012-03-30 21:32:16
यह एपीआई संस्करण किस पर होता है? –
मुझे नहीं पता, मैं त्रुटि रिपोर्ट में नहीं देख सकता। – fhucho
मुझे लगता है कि कुछ फोनों पर 'ऑनर्यूम' घटना हमेशा 'ऑनक्रेट' के बाद नहीं आती है जो बदले में इस गतिविधि के लिए पहले 'ऑन पॉज़' में समस्याएं पैदा करती है। – Xion