2010-11-02 15 views
7

जब मैं ओरिएंटेशन एप्लिकेशन रीस्टार्ट बदलता हूं और मैंने अपना वर्तमान डेटा खो दिया .. मैं गतिविधि समूह का उपयोग कर रहा हूं जिसमें कई गतिविधियां हैं जब मैं मुख्य गतिविधि से ओरिएंटेशन एप्लिकेशन को बदलता हूं।एंड्रॉइड एप्लिकेशन ओरिएंटेशन चेंज पर पुनरारंभ होता है

यह उन्मुखीकरण परिवर्तन पर इस आवेदन को पुनः आरंभ करने से बचने के लिए संभव है?

किसी को जानता है तो कृपया मुझे बताएं ..

उत्तर

9

एंड्रॉयड गतिविधियों पुन: प्रारंभ होता है जब भी डिफ़ॉल्ट रूप से उन्मुखीकरण परिवर्तन।

आप onSaveInstanceState() कॉल करने से पहले एंड्रॉयड गतिविधियों को नष्ट कर देता द्वारा अपने डेटा/राज्य को बचाने के लिए की आवश्यकता होगी। Handling Runtime Changes

यह SO question भी समझने आप इसे के साथ कैसे पेश कर सकता में एक अच्छा पढ़ा साबित होता है:

यहाँ एक नज़र डालें।

आप AndroidManifest फ़ाइल में अपनी गतिविधि को android:configChanges="orientation" जोड़कर इस रोक सकता है।

स्रोत: http://developer.android.com/guide/topics/manifest/activity-element.html#config

+1

मैं था गतिविधि समूहों का उपयोग करना और प्रत्येक गतिविधि या समूह लॉन्च पर मेरा एप्लिकेशन सर्वर के साथ संवाद करता है और डेटा लाता है। तो प्रत्येक गतिविधि के कॉन्फ़िगरेशन परिवर्तन को संभालना संभव नहीं था। इसके बजाय मैं अभिविन्यास को स्थिर रखता हूं और अभिविन्यास परिवर्तन के लिए श्रोता का उपयोग करता हूं और फिर परिदृश्य और चित्र के लिए अलग-अलग एक्सएमएल का उपयोग करता हूं। यह एप्लिकेशन को पुनरारंभ करने से बचता है और मेरा डेटा भी बचाता है। – sachin

1

यह यह कैसे काम करने वाला रहा है। इसमें ऐसा नहीं बनाने के लिए एक तरह से है, लेकिन आप जीवन चक्र निम्नलिखित किया जाना चाहिए और गतिविधि संभालने में सक्षम हो शान से पुन: प्रारंभ होता। यह कई बार यहां पूछा गया है।

1

आप निम्न के साथ परिवर्तन की अनदेखी करने प्रणाली बता सकते हैं:
<activity android:name="SomeActivity" android:configChanges="keyboardHidden|orientation">

लेकिन मैं नहीं कर रही सुझाव है कि क्योंकि यह अक्सर अंतर्निहित समस्याओं कि अभी तक उभरने के लिए कर रहे हैं का एक संकेत है।

मेरी सलाह है कि आप केवल एक नया वर्ग है कि सभी लंबी कार्यवाही या किसी भी गतिविधि संशोधनों के शुरू करने संभाल लेंगे जोड़ने है।

+0

मुझे पता है कि उत्तर पुराना है ('10) लेकिन यह पहला और स्वीकार्य होना चाहिए – HAlexTM

1

क्यों वर्तमान गतिविधि को नष्ट कर दिया और फिर से बनाया जाता है पर API दस्तावेज़ों में कुछ अच्छी जानकारी नहीं है। मैंने पिछली बार कुछ संबंधित चीज़ों पर काम करने के लिए यह बहुत प्रबुद्ध पाया।

जब तक आप अन्यथा निर्दिष्ट नहीं करते हैं, एक कॉन्फ़िगरेशन परिवर्तन (जैसे स्क्रीन अभिविन्यास में परिवर्तन [...]) आपकी वर्तमान गतिविधि को नष्ट कर देगा, सामान्य गतिविधि जीवन चक्र प्रक्रिया के माध्यम से चल रहा है(), ontop(), और ऑनस्ट्रोय() उपयुक्त के रूप में। यदि गतिविधि अग्रभूमि में थी या उपयोगकर्ता के लिए दृश्यमान थी, तो उस उदाहरण पर पर एक बार ऑनस्ट्रो() को कॉल किया जाता है, तो गतिविधि का एक नया उदाहरण बनाया जाएगा, जो भी बचाया गया है, पिछले इंस्टेंस को पिछले इंस्टेंसस्टेटस्टेट (बंडल) से उत्पन्न किया गया था)।

http://developer.android.com/reference/android/app/Activity.html#ConfigurationChanges

10

अगर अपने Android: targetSdkVersion = "12" या उससे कम

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

अगर अपने Android: targetSdkVersion = "13" या अधिक

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

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