Intent
ऑब्जेक्ट Activity
, Service
और अन्य घटक तब तक चल रहे हैं जब तक वे घटक चल रहे हों। वे आसानी से नहीं जाते क्योंकि आप किसी अन्य एप्लिकेशन में चले जाते हैं। इसका कारण यह है कि एंड्रॉइड किसी भी समय प्रक्रिया को मार सकता है, लेकिन उपयोगकर्ता अभी भी वापस जाना चाहता है और जारी रख सकता है कि वे क्या कर रहे थे। इससे अतिरिक्त के माध्यम से जानकारी के छोटे (और कभी-कभी बड़े) बिट्स को संग्रहीत या प्रसारित करने के लिए इराद आदर्श होते हैं।
onNewIntent()
विधि विशेष रूप से उन अनुप्रयोग घटकों को संभालने के लिए है जो अधिक लगातार हैं और इसलिए लाइफसाइकल के दौरान एक से अधिक बार कहा जा सकता है लेकिन इसे क्यों कहा जाता है (और इसलिए डेटा जिसे इसके साथ बुलाया गया था) का ट्रैक रखने की आवश्यकता है। । चाहे आप setIntent()
पर कॉल करें या नहीं, आपको इस पर निर्भर करता है कि आपको क्या करना है।
यदि आपको परवाह नहीं है कि इसे बाद में क्यों कहा जाता है, तो आप setIntent()
पर कॉल करके मूल Intent
रख सकते हैं। यह विशेष रूप से उपयोगी होता है जब आपका Activity
(या कुछ अन्य घटक) वही काम करता है चाहे कोई भी इसे किसने बुलाया और यह कौन सा डेटा प्रदान करता है।
यदि आपको व्यक्तिगत रूप से प्रत्येक ईवेंट का जवाब देने की आवश्यकता है, तो आपको कम से कम Intent
की जानकारी संग्रहीत करनी होगी। इसका मतलब है कि आप setIntent()
से बच सकते हैं, फिर भी, इसके किसी भी घटक से लिंक करने के लिए Intent
जानकारी नहीं होगी जबतक कि आप उन्हें सीधे भेज दें। यह उस एप्लिकेशन के लिए वांछित व्यवहार हो सकता है जो मूल Intent
बीमा नहीं कर सकता था पूरी तरह से संभाला गया था।
यदि आपको व्यक्तिगत रूप से प्रत्येक इरादे का जवाब देना है और मूल Intent
कोई फर्क नहीं पड़ता है, तो आप setIntent()
का उपयोग करते हैं। यह मूल Intent
को छोड़ देता है, जो अभी भी वहां है ... और नए Intent
को स्थान देता है ताकि यदि उपयोगकर्ता दूर हो जाए (फिर भी), तो वे उसी स्थान पर वापस आ जाएंगे।
कारण super.onNewIntent()
इसका कारण यह नहीं है क्योंकि कोर घटक वर्ग यह निर्धारित नहीं कर सकते कि नया Intent
पुराना से अधिक महत्वपूर्ण है या नहीं। यह सब परवाह है कि यह एक Intent
है, यह नहीं है। यही कारण है कि हम इन तरह की विधियों को ओवरराइड करते हैं, ताकि हम निर्धारित करें कि क्या महत्वपूर्ण है और क्या नहीं है। सामान्य भावना यह है कि Activity
जैसे बेस क्लासेस हमारे पास जो भी डेटा चाहते हैं, उसका उपयोग कर सकते हैं (जब तक हम इसे ओवरराइड नहीं करते हैं और अन्यथा बताते हैं)। हालांकि, जब तक हम उन्हें विशेष रूप से नहीं बताते हैं, तब तक उन्हें हमारे डेटा से छुटकारा नहीं मिलना चाहिए (और अक्सर नहीं)। यह एक तर्क है कि आप वास्तव में कुछ प्रोग्रामर के साथ नहीं चाहते हैं। हेहे
उम्मीद है कि इससे मदद मिलती है।
स्रोत
2011-10-13 04:05:50
मैं वास्तव में इस उत्तर की सराहना करता हूं। उद्देश्य अब मेरे लिए बहुत स्पष्ट है। चीयर्स! – w3bshark