Intereting Posts
Android में जेएनआई के साथ उपकरण आईडी कैसे प्राप्त करें? सरणी के साथ सूचकांकऑटोऑफ़बाउंड क्यों ग्लास / जीडीके आधारित वॉयसिलिस्टनर केवल एक्सई 16 में एक बार वॉयस कॉमांड को पकड़ते हैं? एक नक्शा लागू करना जहां चाबियाँ गैर-अतिव्यापी सीमाओं के सेट हैं Android गतिविधि को फिर से शुरू करने पर SQLite अपवाद एंड्रॉइड पिकासो के साथ स्मृति / डिस्क में छवियों को पहले से लोड करें java.lang.IllegalAccessError: विधि 'शून्य और एंड्रॉइड। support.v4.content लाइन स्टीरियो / 2-चैनल रिकॉर्डिंग नेविगेशन ड्रॉवर आइकन (हैमबर्गर और तीर) एनिमेशन जब एक्शन व्यू का विस्तार करते हैं "आउटपुट लिखने में परेशानी: बहुत सारे फ़ील्ड संदर्भ: 70185; मैक्स 65536 है। आप मल्टी-डेक्स विकल्प का उपयोग करने की कोशिश कर सकते हैं। "एंड्रॉइड प्रोजेक्ट का निर्माण करते समय एंड्रॉइड को पोर्टिंग एडब्ल्यूटी ग्राफिक्स कोड एंड्रॉइड: एक कस्टम आरआईडी प्राप्त करने के लिए संभव टैब के माध्यम से डेटा कैसे पास करें? मैं रोबोटैक्ट्रिक का उपयोग कर इकाई परीक्षणों के लिए मेमोरी डेटाबेस के साथ सक्रिय एंड्रॉइड का उपयोग कैसे कर सकता हूं? java.net.socketException: वास्तविक डिवाइस पर एप चलाते समय ऑपरेशन समय समाप्त होता है

रिजवीवर पर प्रसारित रिसीवर पंजीकृत होने पर ट्रिगर किया गया

मेरे पास एक प्रसारण रिसीवर है, जिस समय से यह पंजीकृत है (और बाद में पोजीशन / ऑन रीस्यूम के साथ पुन: प्राप्त किया गया है), निश्चित रूप से यह गलत व्यवहार है? क्या मुझे यहाँ कुछ याद आ गया है?

class FooActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); broadcastReceiver = new FooBroadcastReceiver(); intentFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); } @Override protected void onResume() { super.onResume(); registerReceiver(connectivityReceiver, intentFilter); } @Override protected void onPause() { super.onPause(); unregisterReceiver(connectivityReceiver); } class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (connectivityAction(intent)) { Log.d("footag", "onReceive"); } } private boolean connectivityAction(Intent intent) { return ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction()); } } 

Solutions Collecting From Web of "रिजवीवर पर प्रसारित रिसीवर पंजीकृत होने पर ट्रिगर किया गया"

CONNECTIVITY_ACTION प्रसारण कुछ उपकरणों पर चिपचिपा लगता है (हालांकि प्रलेखन का अर्थ है कि यह नहीं है)। इसका मतलब यह है कि जब आप रिसीवर को पंजीकृत करते हैं, तो उसे तुरंत हाल ही में भेजे गए प्रसारण के साथ onReceive() फोन किया जाएगा। चूंकि आप पंजीकरण और पंजीकरण रद्द कर रहे हैं पर onPause() और onResume() आपको बहुत सारे कॉल onReceive() । आप इसे एक अलग तरीके से करना चाह सकते हैं।

उत्तर के लिए धन्यवाद! मेरा समाधान उन सभी का परिणाम था, एक स्पष्ट घोषित रिसीवर पर स्विच करके और रिसीवर घटक को ऑन-रिज्यूम / ऑन-पॉज़ेज़ को सक्षम / निष्क्रिय करने से रिसीवर की चिपचिपा प्रकृति बंद कर दी गई थी। और घटक सक्षम / अक्षम करके मुझे मन का एक हिस्सा हो सकता है कि मैं एक द्वितीय श्रेणी के नागरिक हूं

 @Override protected void onResume() { super.onResume(); setReceiverState(PackageManager.COMPONENT_ENABLED_STATE_ENABLED); } @Override protected void onPause() { super.onPause(); setReceiverState(PackageManager.COMPONENT_ENABLED_STATE_DISABLED); } private void setReceiverState(int receiverState) { ComponentName receiver = new ComponentName(this, FooBroadcastReceiver.class); PackageManager pm = this.getPackageManager(); pm.setComponentEnabledSetting(receiver, receiverState, PackageManager.DONT_KILL_APP); } 

AndroidManifest.xml

 <receiver android:name="com.example.receiver.FooBroadcastReceiver"> <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> </receiver> 

यहाँ एक और समाधान है जो मेरे लिए काम करता है:

 class FooActivity extends Activity { private Intent mReceiverRegisteringIntent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); broadcastReceiver = new FooBroadcastReceiver(); intentFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); } @Override protected void onResume() { super.onResume(); mReceiverRegisteringIntent = registerReceiver(connectivityReceiver, intentFilter); } @Override protected void onPause() { super.onPause(); unregisterReceiver(connectivityReceiver); } private class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (connectivityAction(intent)) { Log.d("footag", "onReceive"); //if mReceiverRegisteringIntent is not null, then this is the sticky //broadcast received when registering the receiver for the first time if (mReceiverRegisteringIntent != null) { //set it to null for future broadcasts mReceiverRegisteringIntent = null; return; //do nothing } //logic for future broadcasts ... } } private boolean connectivityAction(Intent intent) { return ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction()); } } } 

मैं मान रहा हूँ कि MyBroadcastReceiver लिए एक आंतरिक वर्ग है, इसलिए यह mReceiverRegisteringIntent उपयोग कर सकता है

उन दो लाइनों को हटा दें जिन पर ट्रिगर नहीं किया जाएगा।

 registerReceiver(connectivityReceiver, intentFilter); unregisterReceiver(connectivityReceiver);