2013-09-07 9 views
18

पर एक्स्ट्रा के साथ इरादा कैसे पास करें मेरे पास BroadcastReceiver है जो HomeActivity लॉन्च करता है जिसमें अतिरिक्त जानकारी पास की गई है।पहले से चल रही गतिविधि

गतिविधि तब से होती है जब गतिविधि पहले से चल रही है और प्रसारण रिसीवर फिर से ट्रिगर हो जाता है जो नई जानकारी के साथ HomeActivity लॉन्च करने का प्रयास करता है। गतिविधि निष्पादन के OnResume() या OnCreate() है?

यदि नहीं, तो BroadcastReceiver ट्रिगर होने पर चलने वाली गतिविधि को गुजरने/पुनः लोड करने का कोई अन्य तरीका है?

+1

शायद यह आपके प्रश्न का उत्तर हो सकता है: http://stackoverflow.com/questions/10143222/भेजने-डेटा-टू-एक-गतिविधि-जो-शुरू हो सकती है (आपको न्यूइन्टेंट() पर ओवरराइड करना होगा)। मुझे यकीन नहीं है हालांकि। – ujvl

+1

आपको 'इंटरफेस' की आवश्यकता है। कॉलबैक परिभाषित करें। – Simon

उत्तर

27

सुनिश्चित करें कि जब आप ब्रॉडकास्ट रिसीवर से इरादा लॉन्च कर रहे हैं तो आपने FLAG_ACTIVITY_SINGLE_TOP ध्वज सेट किया है।

intent.addFlags (FLAG_ACTIVITY_SINGLE_TOP); 

... 


class HomeActivity extends Activity { 
    ... 
    @Override 
    protected void onNewIntent(Intent intent) { 
     Bundle extras = intent.getExtras(); 
    } 
    ... 
} 
3

बस कोरी रॉय के जवाब विस्तार आप भी "SingleTop" AndroidManifest.xml में परिभाषित करने के लिए किया है।

<activity 
     android:name="MainActivity"    
     android:launchMode="singleTop" 

ऐसा लगता है कि android.support.v7.app.ActionBarActivity का विस्तार इस विधि काम नहीं करता है ...

+1

यह आवश्यक नहीं लगता है! इसका मतलब है कि डिफ़ॉल्ट लॉन्च मोड 'सिंगलटॉप' है। हो सकता है कि आप इसे और केवल अधिसूचनाओं के लिए नहीं चाहते – Boy

+1

यह ध्यान देने योग्य है कि लॉन्च मोड को केवल या तो कॉलम के इरादे से मेनिफेस्ट में या addFlags() के माध्यम से सेट करने की आवश्यकता है, दोनों नहीं। – Cody

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