त्वरित पृष्ठभूमि
डिफ़ॉल्ट रूप से, जब कुछ मुख्य कॉन्फ़िगरेशन परिवर्तन एंड्रॉइड पर होते हैं (एक सामान्य उदाहरण एक अभिविन्यास परिवर्तन होता है), एंड्रॉइड पूरी तरह से ऐसे परिवर्तनों को समायोजित करने में मदद करने के लिए रनिंग गतिविधि को फिर से शुरू करता है।
जब आप android:configChanges="keyboardHidden|orientation"अपने AndroidManifest में परिभाषित करते हैं, तो आप Android से कह रहे हैं: "कृपया कीबोर्ड रीसेट करने पर डिफ़ॉल्ट रीसेट न करें, या फ़ोन घुमाया जाए; मैं इसे स्वयं हैंडल करना चाहता हूँ। हाँ, मुझे पता है कि मैं क्या कर रहा हूँ। "
क्या यह अच्छी चीज है? हम जल्द ही देखेंगे ...
कोई चिंता नहीं?
आपके द्वारा शुरू किए जाने वाले पेशेवरों में से एक यह है:
अपनी गतिविधि के बारे में चिंता करने की कोई जरूरत नहीं है
कई मामलों में, लोग गलती से मानते हैं कि जब उनके पास एक त्रुटि है जो एक अभिविन्यास परिवर्तन ("रोटेशन") द्वारा उत्पन्न हो रही है, तो वे बस इसे डालकर ठीक कर सकते हैं android:configChanges="keyboardHidden|orientation"।
हालाँकि, android: configChanges = "कीबोर्डहाइंड | ओरिएंटेशन" एक बैंडेड से ज्यादा कुछ नहीं है। सच में, कई तरीके हैं जिनसे कॉन्फ़िगरेशन परिवर्तन को ट्रिगर किया जा सकता है। उदाहरण के लिए, यदि उपयोगकर्ता एक नई भाषा (यानी स्थान बदल गया है) का चयन करता है, तो आपकी गतिविधि उसी तरह से फिर से शुरू हो जाएगी जैसे यह एक अभिविन्यास परिवर्तन द्वारा करता है। यदि आप चाहें तो आप सभी विभिन्न प्रकार के कॉन्फ़िगरेशन परिवर्तनों की सूची देख सकते हैं ।
संपादित करें : हालांकि, अधिक महत्वपूर्ण बात यह है कि जैसे ही हैकबॉड टिप्पणियों में बताते हैं, आपकी गतिविधि भी फिर से शुरू हो जाएगी जब आपका ऐप पृष्ठभूमि में होगा और एंड्रॉइड इसे मारकर कुछ मेमोरी को मुक्त करने का निर्णय लेता है। जब उपयोगकर्ता आपके ऐप पर वापस आता है, तो एंड्रॉइड गतिविधि को उसी तरह से फिर से शुरू करने का प्रयास करेगा, यदि वह कुछ अन्य कॉन्फ़िगरेशन परिवर्तन था। यदि आप इसे संभाल नहीं सकते हैं - उपयोगकर्ता खुश नहीं होगा ...
दूसरे शब्दों में, का उपयोग android:configChanges="keyboardHidden|orientation"करना आपकी "चिंताओं" का समाधान नहीं है। सही तरीका यह है कि आप अपनी गतिविधियों को कोड करें ताकि वे उन पर किसी भी एंड्रॉइड थ्रो के साथ खुश हों। यह एक अच्छा अभ्यास है जो आपको सड़क को नीचे लाने में मदद करेगा, इसलिए इसकी आदत डालें।
तो मुझे इसका उपयोग कब करना चाहिए?
जैसा कि आपने बताया कि एक अलग फायदा है। एक रोटेशन के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन परिवर्तन को अधिलेखित करने से यह स्वयं को संभालकर चीजों को गति देगा। हालांकि, यह गति सुविधा की कीमत के साथ आती है।
इसे सीधे शब्दों में कहें, अगर आप ओवरराइटिंग करके चित्र और परिदृश्य दोनों के लिए समान लेआउट का उपयोग कर रहे हैं। गतिविधि के पूर्ण-विकसित रीलोड के बजाय, शेष स्थान को भरने के लिए विचार सरलता से इधर-उधर हो जाएंगे।
हालाँकि , अगर किसी कारण से आप डिवाइस में लैंडस्केप होने पर एक अलग लेआउट का उपयोग करते हैं, तो तथ्य यह है कि एंड्रॉइड आपकी गतिविधि को फिर से लोड करता है क्योंकि यह सही लेआउट को लोड करेगा। [यदि आप इस तरह की गतिविधि पर ओवरराइड का उपयोग करते हैं, और रनटाइम पर कुछ जादुई री-लेआउट करना चाहते हैं ... अच्छा, सौभाग्य - यह सरल से बहुत दूर है]
त्वरित सारांश
हर तरह से, अगर android:configChanges="keyboardHidden|orientation"आपके लिए सही है, तो इसका उपयोग करें। लेकिन यह ज़रूर परखें कि जब कुछ बदलता है, तो क्या होता है, क्योंकि एक अभिविन्यास परिवर्तन ही एकमात्र तरीका नहीं है, जिसे पूर्ण गतिविधि पुनरारंभ किया जा सकता है।