2010-07-25 6 views
69

मेरे पास एक ऐप है जो केवल पोर्ट्रेट मोड में काम करता है, और मैंने अपनी अभिव्यक्ति फ़ाइल में परिवर्तन को प्रतिबिंबित करने के लिए प्रत्येक गतिविधि के लिए बदलाव किए हैं। लेकिन जब मैं डिवाइस को घुमाता हूं, तो गतिविधि फिर से पुन: प्रयास करती है। गतिविधि को कैसे नष्ट नहीं करें?एंड्रॉइड, डिवाइस को घुमाने पर गतिविधि को कैसे नष्ट नहीं किया जाए?

+1

इस बार के खिलाफ की सलाह दी है, आप की तरह कुछ के साथ प्रोग्राम के अपने अनुप्रयोगों के उन्मुखीकरण को सेट कर सकें: setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); – stealthcopter

+7

यह क्यों होगा? मान लें कि हमारे पास ऐसी सेवा है जो चलाने में 2 सेकंड लगती है। यदि गतिविधि हर बार नष्ट हो जाती है, तो वह सेवा हर बार चलती रहती है जबकि मुझे इसे एक बार चलाने की आवश्यकता होती है। –

उत्तर

114

एपीआई 12 के लिए और नीचे: यदि आप एपीआई लक्षित कर रहे हैं जोड़ने

android:configChanges="orientation" 

जोड़ें "screenSize" 13 या ऊपर क्योंकि जब भी अपने रुख में परिवर्तन तो अपने स्क्रीन आकार करता है, अन्यथा नए उपकरणों के लिए जारी रहेगा अपनी गतिविधि को नष्ट करने के लिए। "ScreenSize"

android:configChanges="orientation|screenSize" 

का उपयोग कर AndroidManifest.xml में अपनी गतिविधि के बारे में अधिक जानकारी के लिए नीचे अंडे के जवाब देखें। इस प्रकार आपकी गतिविधि स्वचालित रूप से पुनरारंभ नहीं की जाएगी। अधिक जानकारी के लिए the documentation देखें

+0

गतिविधि फिर से शुरू की जाती है। मुझे नहीं पता कि गतिविधि को घुमाने पर होने वाली सभी चीजें करने का क्या मतलब है, भले ही यह लगभग घूर्णन न हो। क्या इस संदेश को रूट करने के लिए सेंसर किसी ओएस को रोटेशन के बारे में ओएस भेजता है, या ऐसा कुछ है? – Vasil

+6

आप किस डिवाइस पर प्रोग्रामिंग कर रहे हैं? याद रखें, उदाहरण के लिए कीबोर्ड को स्लाइड करने से आपकी गतिविधि भी पुनरारंभ हो सकती है ... (यदि कारण है कि "कीबोर्ड | कीबोर्डहेड | ओरिएंटेशन" पर confChanges को सेट किया गया है) –

+1

यह सही उत्तर है धन्यवाद –

100

आधिकारिक दस्तावेज flurin से कहा,

नोट: आपके आवेदन एपीआई स्तर को लक्षित करता है 13 या इससे अधिक (के रूप में minSdkVersion और targetSdkVersion विशेषताओं द्वारा घोषित ), तो आप भी "screenSize घोषित करना चाहिए "कॉन्फ़िगरेशन, क्योंकि यह चित्र भी बदलता है जब कोई डिवाइस पोर्ट्रेट और लैंडस्केप ओरिएंटेशन के बीच स्विच करता है।

तो अगर आपके ऐप का लक्ष्य एपीआई स्तर 13 या अधिक, आप के बजाय इस config स्थापित करना चाहिए:

android:configChanges="orientation|screenSize"

+4

आपको बहुत बहुत धन्यवाद! अन्य सभी उत्तरों इस भाग को याद करते हैं जहां एपीआई लेवल 13 इस स्क्रीन को पेश करता है आकार बदलें। आपने अभी अपना जीवन बचाया है! :) –

+1

@egg धन्यवाद youuuuuuu! :) यह मदद की! – KarenAnne

+0

बहुत धन्यवाद @gg। मैं इसके साथ संघर्ष कर रहा हूं ... – sampath

8

सही समाधान है

एंड्रॉयड: configChanges = "उन्मुखीकरण | screenSize"

एंड्रॉइड प्रलेखन:

वर्तमान उपलब्ध स्क्रीन का आकार बदल गया है। यह वर्तमान पहलू अनुपात के सापेक्ष वर्तमान में उपलब्ध आकार में परिवर्तन का प्रतिनिधित्व करता है, इसलिए जब उपयोगकर्ता परिदृश्य और चित्र के बीच स्विच करता है तो बदल जाएगा। हालांकि, यदि आपका एप्लिकेशन एपीआई स्तर 12 या उससे कम लक्षित करता है, तो आपकी गतिविधि हमेशा इस कॉन्फ़िगरेशन को स्वयं ही बदलती है (यह कॉन्फ़िगरेशन परिवर्तन आपकी गतिविधि को पुनरारंभ नहीं करता है, यहां तक ​​कि एंड्रॉइड 3.2 या उच्चतर डिवाइस पर चलते समय भी)। प्रकट में

-1

लिखने:

android:configChanges="orientation|screenSize|keyboardHidden" 

और गतिविधि है कि आपके समस्या हल में से ओवरराइड:

@Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
} 
+1

ऑन कॉन्फ़िगरेशन चेंज विधि को ओवरराइड करना और मूल कार्यान्वयन को कुछ भी उपयोगी करने का आह्वान करना क्यों? – ricosrealm

0

मैं थोड़ा के लिए इस खिलवाड़ किया गया और फिर relized कि मैनिफ़ेस्ट फ़ाइल के अंदर मैं कॉन्फ़िगरेशन चेंज को एप्लिकेशन स्तर पर डाल रहा था, न कि गतिविधि स्तर पर। यहां कोड जैसा दिखता है जब यह मेरे लिए सही तरीके से काम कर रहा है।

Image of correct manifest files code

+1

आपको छवि के बजाय अपनी पोस्ट के भीतर कोड साझा करना चाहिए। –

+0

कृपया ** अपनी पोस्ट संपादित करें और स्क्रीनशॉट के बजाय वास्तविक मेनिफेस्ट कोड को टेक्स्ट के रूप में दिखाएं। अन्य आपकी छवियों से कॉपी और पेस्ट नहीं कर सकते हैं। [यहां देखें] (https://meta.stackoverflow.com/a/285557/1402846) विवरण के लिए। धन्यवाद। – Pang

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