7

एंड्रॉइड में, जब स्क्रीन अभिविन्यास बदलता है (लैंडस्केप और पोर्ट्रेट के बीच) onCreate विधि को कॉल किया जाता है, जिसे सही ढंग से संभाला नहीं जाता है, तो परिणाम पूरी गतिविधि को फिर से बदल देगा जब परिणाम लेआउट को बदलता है और सभी एक ही जानकारी को बनाए रखें।एंड्रॉइड: कुशल स्क्रीन रोटेशन हैंडलिंग

मुझे इसे हल करने के कुछ तरीकों के बारे में पता है, लेकिन मुझे सबसे प्रभावी तरीके से रूचि है।

1) मैनिफेस्ट को बताते हुए कि विधि को ओवरराइड करके और इसे खाली छोड़कर अभिविन्यास परिवर्तन को संभालेगा।

2) onSaveInstanceState() ओवरराइड और बचाने के यहां डेटा onCreate()

3 में repopulated किए जाने वाले) ओवरराइड onPause() जो डेटा का एक बंडल बना सकते हैं और onSaveInstanceState()

करने के लिए इसे जाहिर भेज देंगे, इन सभी विकल्प हैं, लेकिन एक एक बेहतर अभ्यास (छोटे, मध्यम, डेटा की बड़ी मात्रा)

धन्यवाद है जो

+1

एक तरह से आप गतिविधि के पुन: निर्माण को रोकने और सिर्फ पोर्ट्रेट और लैंडस्केप लेआउट के बीच स्विच कर सकते हैं। मेरा उत्तर [यहां] (http://stackoverflow.com/questions/7749675/how-to-stop-changing-the-orientation-when-a-progress-bar-is-spinning-in-android/7749727#7749727 की जाँच करें) –

+0

इस तरह से अच्छी तरह से काम करने के लिए लगता है, मैं 'रेस/लेआउट-land' फ़ोल्डर का उपयोग करके लेआउट में ऑटो-परिवर्तन की उपयोग करने में सक्षम होना चाहता हूँ। बेशक यह एक साधारण गतिविधि के लिए बहुत अधिक उपरि है। – Sababado

+0

खैर, यह ऑटो matically अपने लेआउट बदल जाएगा, तो आप सिर्फ में कोड यह thats contentView बदलने की जरूरत है। –

उत्तर

13

कुछ उपकरण कॉन्फ़िगरेशन को बदल सकते हैं रनटाइम के दौरान (जैसे स्क्रीन अभिविन्यास, कीबोर्ड उपलब्धता, और भाषा)। जब ऐसा परिवर्तन होता है, एंड्रॉइड चलती गतिविधि को पुनरारंभ करता है (onDestroy() कहा जाता है, उसके बाद onCreate())।

  • ठीक से पुन: प्रारंभ करने संभाल करने के लिए, यह महत्वपूर्ण है कि अपनी गतिविधि , सामान्य गतिविधि जीवन चक्र के माध्यम से अपनी पूर्व स्थिति पुनर्स्थापित करता जो एंड्रॉयड कॉल onSaveInstanceState() से पहले ही अपने गतिविधि को नष्ट कर देता है ताकि आप आवेदन के बारे में डेटा को बचा सकता है में राज्य। आप onCreate() या onRestoreInstanceState() के दौरान राज्य को पुनर्स्थापित कर सकते हैं।

हालांकि, आपको ऐसी स्थिति का सामना करना पड़ सकता है जिसमें आपके एप्लिकेशन को पुनरारंभ करना और डेटा की महत्वपूर्ण मात्रा को बहाल करना महंगा हो और खराब उपयोगकर्ता अनुभव बना सके।

  1. Retain an object during a configuration change

    जब एक विन्यास बदलाव अपनी गतिविधि को पुनः आरंभ, लेकिन अपनी गतिविधि का नया उदाहरण के लिए एक स्टेटफुल वस्तु ले जाने के लिए अनुमति दें: ऐसी स्थिति में, आप दो अन्य विकल्प हैं।

  2. Handle the configuration change yourself

    रोकें कुछ विन्यास बदलाव के दौरान अपनी गतिविधि को पुन: प्रारंभ से प्रणाली है, लेकिन जब विन्यास, परिवर्तन करना इतना है कि यदि आप स्वयं अपनी गतिविधि के रूप में आवश्यक अद्यतन कर सकते हैं एक कॉलबैक प्राप्त करते हैं।

तो, अपने डेटा संचालन और आवेदन के साथ उपयोगकर्ता के अनुभव के तट के अनुसार आप चुन सकते हैं क्या आप के लिए सबसे अच्छा है ..

संपादित करें: अपनी जरूरत के अनुसार सिर्फ लेआउट बदलने के लिए मुझे लगता है कि आपको का उपयोग करना होगा और इसमें परिवर्तन करना होगा।

+0

यह टुकड़ों पर कैसे लागू होता है? –

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

  • कोई संबंधित समस्या नहीं^_^