पहली जगह में, इस सवाल का कुछ Android दिग्गजों के लिए वास्तव में बेतुका ध्वनि सकता है, लेकिन एक नौसिखिया होने के नाते, मैं वास्तव में इस प्रश्न को पूछने की जरूरत है:
एक Intent
एक निष्क्रिय डेटा संरचना है कि एक दूसरे के लिए Activity
से जानकारी वहन करता है। एक Intent
नाम-मूल्य जोड़े के रूप में डेटा रखने में भी सक्षम है (putExtra()
के माध्यम से)।
लेकिन onCreate()
विधि को ओवरराइड करते समय हम पैरामीटर के रूप में Bundle
पास करते हैं, जो अंततः नाम-मूल्य जोड़े के रूप में मूल्य रखता है और onSaveInstanceState()
की सहायता से जानकारी संग्रहीत करने में सक्षम है।
ऐसे परिदृश्य में हमें दोनों की आवश्यकता क्यों है और दोनों को क्या अंतर है?
अद्यतन
मुझे लगता है मैं तुम्हें एक ग़लतफ़हमी है कि मैं गलत समझा है क्या एक Intent
है में लोगों को मार्ग प्रशस्त किया है:
जब मैंने कहा कि "एक Intent
एक निष्क्रिय डेटा संरचना है कि एक Activity
से जानकारी वहन करती है दूसरे के लिए ", जो मैं इंगित करना चाहता था वह यह भी था कि Intent
putExtra()
विधि की सहायता से जानकारी (संदर्भ और कार्रवाई विवरण के अलावा) ले जा सकता है। हमें Bundle
का उपयोग करने की आवश्यकता क्यों है?
कृपया यह भी सुनिश्चित करें कि आप नीचे दिए गए टिप्पणियों में कोई कारण छोड़ दें, यदि आप प्रश्न को वोट/अप करते हैं। उदारता के लिए धन्यवाद।बंडल और इरादे के बीच क्या अंतर है?
उत्तर
मैं वास्तव में से है जहाँ आप Intent के लिए इस परिभाषा मिल गया पता नहीं है, लेकिन एक 'आशय' परिभाषा
के रूप में एक आशय किसी ऑपरेशन के एक सार वर्णन प्रदर्शन किया जा रहा है। इसका उपयोग किसी गतिविधि को लॉन्च करने के लिए प्रारंभिकता के साथ किया जा सकता है, प्रसारण इंटेंटेंट किसी भी रुचि ब्रॉडकास्ट रिसीवर घटकों, और स्टार्ट सेवा (इरादा) या बाइंड सेवा (इरादा, सर्विसकनेक्शन, int) को पृष्ठभूमि सेवा के साथ संवाद करने के लिए भेजने के लिए इसका उपयोग किया जा सकता है।
एक इरादा देर से रनटाइम बाध्यकारी को विभिन्न अनुप्रयोगों में कोड के बीच करने की सुविधा प्रदान करता है। इसका सबसे महत्वपूर्ण उपयोग गतिविधियों को लॉन्च करने में है, जहां इसे गतिविधियों के बीच गोंद के रूप में माना जा सकता है। यह मूल रूप से एक निष्क्रिय डेटा संरचना निष्पादित करने के लिए एक क्रिया का एक सार वर्णन है।
तो आशय नई (गतिविधि, सेवा, BroadCastReceiver)
Intent में आप अतिरिक्त
एक्स्ट्रा कलाकार के लिए एक परिभाषा मिल जाएगा से जोड़ने के लिए एक क्रिया है - यह एक बंडल है किसी भी अतिरिक्त जानकारी के। इसका उपयोग घटक को विस्तारित जानकारी प्रदान करने के लिए किया जा सकता है। उदाहरण के लिए, यदि हमारे पास ई-मेल संदेश भेजने की कोई कार्रवाई है, तो हम विषय, शरीर इत्यादि की आपूर्ति के लिए यहां डेटा के अतिरिक्त टुकड़े भी शामिल कर सकते हैं।
तो इसका मतलब है कि आशय में अतिरिक्त एक बंडल
का एक उद्देश्य Bundle के लिए जा रहे के रूप में आप यह एक दूसरे के लिए आशय से डेटा के लिए एक वाहक है और Key-Value
चर का एक नक्शा है उल्लेख किया है।
मुझे लगता है कि आप पहले ही समझ चुके हैं कि Bundle
क्या है: कुंजी-मूल्य जोड़े का संग्रह।
हालांकि, एक इरादा बहुत अधिक है। इसमें एक ऑपरेशन के बारे में जानकारी शामिल है जिसे किया जाना चाहिए। यह नया ऑपरेशन उस क्रिया द्वारा परिभाषित किया गया है जिसका उपयोग इसके लिए किया जा सकता है, और डेटा को इसे दिखाना/संपादित करना/जोड़ना चाहिए। सिस्टम अनुरोधित कार्रवाई के लिए उपयुक्त ऐप घटक (गतिविधि/प्रसारण/सेवा) खोजने के लिए इस जानकारी का उपयोग करता है।
एक बंडल के रूप में इरादे के बारे में सोचें जिसमें निहित डेटा प्राप्त करना चाहिए और यह कैसे प्रस्तुत किया जाना चाहिए, इस बारे में जानकारी भी शामिल है।
प्रश्न अपडेट किया गया। पहले अनुचित विवरण के लिए खेद है। आपके उत्तर के लिए आ रहा है, लेकिन मैं यही पूछना चाहता हूं- "हमें 'बंडल' की आवश्यकता क्यों है जब हमारे पास पहले से ही 'इरादे' के साथ उपलब्ध सुविधाएं हों?" – ikartik90
क्योंकि आपको कभी-कभी कुंजी-मूल्य जोड़े के संग्रह की आवश्यकता होती है, जिनके पास पूर्व-परिभाषित संकेत नहीं है, जिनके इरादे के क्षेत्र हैं। आपको अक्सर किसी ऐसे स्थान पर शब्दकोश की आवश्यकता होती है जहां यह कोई कार्रवाई शुरू करने से संबंधित नहीं है किसी भी तरह से। –
इरादे घटकों के बीच संचार की सुविधा प्रदान करता है। इंटेंट वह संदेश है जो गतिविधि जैसे घटकों के बीच पारित होता है। एक और गतिविधि में
Bundle bundle=new Bundle();
bundle.put(key,value);
intent.putExtra(bundle);
startActivity(intent);
कॉल बंडल: कि intent.putExtra (कुंजी, मूल्य) और intent.putExtra (बंडल) इस्तेमाल किया जा सकता
Intent intent = new Intent();
intent.setClass(this, Other_Activity.class);
// intent.putExtra(key,value)
intent.putExtra("EXTRA_ID", "SOME DATAS");
startActivity(intent);
बंडल का उपयोग करना :
Bundle extras=getIntent().getExtras();
extras.getString(key);
के स्रोत से वर्ग, वास्तव में दोनों के बीच कोई अंतर नहीं है। आशय वर्ग से नीचे दिए गए कोड की जाँच करें:
public Intent putExtra(String name, String value) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putString(name, value);
return this;
}
और
public Intent putExtras(Bundle extras) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putAll(extras);
return this;
}
तो मुझे लगता है, फर्क सिर्फ इतना है उपयोग की आसानी है .. :) 1 के लिए, आप अपने समूह बनाने की सुविधा की जरूरत नहीं है स्पष्ट रूप से।
- 1. इरादे और लंबित इरादे के बीच सटीक अंतर क्या है?
- 2. बंडल और बंडल के बीच अंतर
- 3. डॉकर बंडल और डॉकर-कंपोज़ के बीच क्या अंतर है?
- 4. 'बंडल' और 'बंडल इंस्टॉल' रेल के बीच अंतर 3?
- 5. बंडल और मणि के बीच अंतर स्थापित करें?
- 6. 7zip के 7z.sfx और 7zsd.sfx के बीच क्या अंतर है?
- 7. [अपरिभाषित] और [,] के बीच क्या अंतर है?
- 8. # {} $ {} और% {} के बीच क्या अंतर है?
- 9. `&` और `ref` के बीच क्या अंतर है?
- 10. $ और $$ के बीच क्या अंतर है?
- 11. के बीच क्या अंतर है:। और: आर !?
- 12. वेरिलोग के बीच क्या अंतर है! और ~?
- 13. भिन्नता और '-' के बीच क्या अंतर है?
- 14. क्या $ @ और "$ @" के बीच कोई अंतर है?
- 15. * और * के बीच क्या अंतर है?
- 16. "$^एन" और "$ +" के बीच क्या अंतर है?
- 17. एक्सकोड बिल्ड चरणों के लिए कॉपी बंडल संसाधन और कॉपी फ़ाइलों के बीच क्या अंतर है?
- 18. के बीच क्या अंतर है?
- 19. अंतर और कहां के बीच क्या अंतर है?
- 20. एंड्रॉइड: इरादे के लिए setFlags और addFlags के लिए setFlags और addFlags के बीच अंतर क्या है
- 21. बंडल नाम और ऐप्पल ऐप स्टोर नामों के बीच क्या अंतर है?
- 22. आईफोन ओएस में ढांचे और बंडल के बीच क्या अंतर है?
- 23. Magento में बंडल उत्पाद और विन्यास योग्य उत्पाद के बीच क्या अंतर है?
- 24. file_get_contents और fread बीच क्या अंतर है
- 25. @Android बीच क्या अंतर है: और एंड्रॉयड:
- 26. फ़िंग और PHPUnderControl के बीच क्या अंतर है?
- 27. क्या बीच का अंतर है :: और ::: स्काला
- 28. निहित और स्पष्ट इरादों के बीच अंतर
- 29. "। +" और "। +?" के बीच अंतर
- 30. चिज़ेल और लावा और सीएलएएसएच के बीच क्या अंतर है?
इसे पढ़ें http://stackoverflow.com/questions/4999991/what-is-a-bundle-in-an-android-application#autocomment35012928 – user
उपरोक्त लिंक इस प्रश्न के बिंदु को याद करता है, जो बीच में अंतर करना है एक बंडल के साथ गुजरने वाले एक इरादे और डेटा के साथ गुजरने वाला डेटा। यदि आप इसे अभी तक आ चुके हैं, तो आप पहले से ही उस लिंक पर गए हैं। –