2011-07-30 19 views
14

पर गतिविधियों को फिर से क्यों बनाता है क्या किसी को एंड्रॉइड के डिज़ाइन के पीछे एक साधारण अभिविन्यास परिवर्तन पर गतिविधियों को नष्ट करने और फिर से बनाने के लिए तर्क पता है?एंड्रॉइड ओरिएंटेशन चेंज

गतिविधि को केवल खुद को फिर से निकालने की अनुमति नहीं देनी चाहिए (यदि यह चुनता है) बेहतर, सरल और अधिक व्यावहारिक डिज़ाइन हो?

Btw, मैं उन्मुखीकरण परिवर्तन के प्रभाव से मेरी ऐप को अक्षम करने के लिए कैसे से अच्छी तरह परिचित हूँ, लेकिन क्या मैं सच में नहीं मिलता है एंड्रॉयड में इस डिजाइन के लिए कारण

+1

यह एक प्रोग्रामिंग प्रश्न है। एंड्रॉइड उत्साही एंड्रॉइड के उपयोगकर्ताओं के लिए अधिक है। मैं आपका प्रश्न स्टैक ओवरफ्लो पर ले जा रहा हूं। –

+0

शुरुआत में इसे पोस्ट करने के बारे में सोच रहा था लेकिन यह सुनिश्चित नहीं था कि यह संबंधित है या नहीं। इसे साफ़ करने के लिए धन्यवाद :) –

उत्तर

1

न ठीक से पता क्यों, मेरा अनुमान है क्योंकि इसे स्क्रीन पर गतिविधि का पुनर्निर्माण करना है।

ऑनक्रेट एक परिवर्तनीय "बंडल सेव किया गया इंस्टेंसस्टेट" लेता है। आप तेजी से पुनः लोड करने के लिए वहां डेटा को सहेज सकते हैं।

package com.android.hello; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 

public class HelloAndroid extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     mTextView = new TextView(this); 

     if (savedInstanceState == null) { 
      mTextView.setText("Welcome to HelloAndroid!"); 
     } else { 
      mTextView.setText("Welcome back."); 
     } 

     setContentView(mTextView); 
    } 

    private TextView mTextView = null; 
} 
8

डॉक्स में, http://developer.android.com/guide/topics/resources/runtime-changes.html

यह कहा गया है कि,

पुनः आरंभ व्यवहार आपके आवेदन स्वचालित रूप से वैकल्पिक संसाधनों के साथ अपने आवेदन पुन: लोड करके नया विन्यास के लिए अनुकूल मदद करने के लिए बनाया गया है।

+4

वैसे यह वास्तव में "सहायता" नहीं करता है जब यह साइड इफेक्ट्स के रूप में कई अन्य समस्याओं का कारण बनता है (उदाहरण के लिए AsyncTasks को लटकाना, संवाद निरंतर जारी नहीं हैं कुछ मैं अब तक आया हूं)। जब वास्तव में आवश्यक सभी चीजों को स्क्रीन पर मौजूदा घटकों का एक रेड्रा/लेआउट होता है, तो यह सुनिश्चित करने के लिए एक आसान तरीका है (गतिविधि को नष्ट और पुनर्निर्मित किए बिना)? –

+5

एक रेड्रो से अधिक की आवश्यकता है। एंड्रॉइड आपको 2 स्क्रीन उन्मुखताओं के लिए अलग-अलग संसाधन (छवियों, तारों, विषयों, शैलियों, लेआउट इत्यादि) रखने की क्षमता प्रदान करता है। मैन्युअल रूप से इन्हें पुनः लोड करना संवाद और एसिन्टास्क को संभालने से कहीं अधिक काम होगा। –

+2

हमम ... एक गतिविधि को नष्ट कर रहा है और वास्तव में पुनर्निर्माण कर रहा है कि ऐप को किसी अतिरिक्त संसाधन को फिर से लोड करने की इजाजत देने से ज्यादा 'लाइटवेट' है? –

1

यह बहुत आसान है। एंड्रॉइड उन्मूलन परिवर्तनों पर एक गतिविधि को नष्ट कर देता है और पुन: प्रयास करता है ताकि आप (डेवलपर) के पास पिछले लेआउट का उपयोग करने या किसी अन्य को लागू करने और लागू करने का विकल्प हो।

+1

आप सही हैं लेकिन तर्क पूरी तरह से गलत है _in राय_। दस्तावेजों को नष्ट करने के बारे में बताता है: '[..] या तो हो सकता है क्योंकि गतिविधि खत्म हो रही है [..] या क्योंकि सिस्टम अस्थायी रूप से अंतरिक्ष को बचाने के लिए गतिविधि के इस उदाहरण को नष्ट कर रहा है।'। यह अभिविन्यास परिवर्तनों को बाहर नहीं करता है, लेकिन ऐसा लगता है कि यह इस तरह काम करता है .. इस प्रकार, एकमात्र तरीका जिसे मैं 'प्राकृतिक' नष्ट करने में सक्षम हूं, स्क्रीन को घूर्णन कर रहा है। 'रेज्यूम' करने के बाद 'रेज्यूम' करना मेरे लिए अधिक तार्किक लगता है। इसके अलावा, 'फिर से शुरू करें' एक गलत नाम है, लेकिन वह एक तरफ है। – pauluss86

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