2011-12-19 14 views
5

मुझे एक स्थैतिक चर के संबंध में एक समस्या का सामना करना पड़ रहा है जिसे मैं अपने पूरे प्रोजेक्ट में उपयोग कर रहा हूं (इसमें फ़ाइल से कुछ फ़ील्ड हैं)। चर कुछ मामलों में अपना मूल्य खो देता है, हमेशा नहीं। मैंने एक स्थैतिक चर के जीवन चक्र के बारे में पढ़ा है, कि वह 3 मामलों में मूल्य खो देती है:स्टेटिक वैरिएबल मूल्य

1) कक्षा अनलोड हो गई है।

2) JVM बंद हो जाता है।

3) प्रक्रिया मर जाती है।

तो मेरे पास एक प्रश्न है: फिर से फाइल को फिर से लिखने के लिए पर्याप्त नहीं है और फ़ाइल को दोबारा पार्स करें और स्थैतिक चर फिर से खिलाएं यदि यह शून्य है?

+2

उपयोग करने वाले प्रासंगिक कोड को पोस्ट करने पर विचार करना चाहेंगे। – Lion

+0

उत्तर के लिए धन्यवाद, लेकिन आवेदन के साथ ऐसा लगता है कि जब मैं पृष्ठभूमि में जाता हूं, तो मैं अपने मूल्यों को खो देता हूं ... –

उत्तर

2

यदि आपको वास्तव में स्थिर/ग्लोबल्स का उपयोग करना चाहिए तो उन्हें अपनी कस्टम कक्षा में डाल दें जो Application फैलाता है। इस तरह:

public class FooApplication extends Application { 
    protected Bar myBar; 

    public Bar getBar() { return myBar; } 
    public void setBar(Bar bar) { myBar = bar; } 
    ... 
} 

घोषित करें कि आप अपने मैनिफेस्ट का उपयोग कर कस्टम एप्लिकेशन क्लास का उपयोग करेंगे।

<application 
    android:icon="@drawable/ic_launcher_noteit1" 
    android:label="@string/app_name" 
    android:theme="@style/App_Theme" 
    android:name="FooApplication" 
    android:debuggable="true"> 

अब आप (FooApplication) getApplication() का उपयोग कर किसी भी गतिविधि से आपके आवेदन वस्तु पहुँच सकते हैं। कृपया ध्यान दें कि यह अनुशंसित विधि नहीं है। अनुशंसित विधि सिंगलटन पैटर्न का उपयोग करना है।

यदि फ़ाइल का विश्लेषण एक महंगा ऑपरेशन है तो आप इसे हर onResume पर पार्स नहीं करना चाहेंगे। इसके बजाय आप onRetainNonConfigurationInstance()

1

आप मुझे यह सुनिश्चित करना चाहते हैं कि पहले, आप अनजाने में उस चर को रीसेट नहीं करते हैं। इसके लिए आप getMyVariable() और setMyVariable() फ़ंक्शंस बनाना, कह सकते हैं, उनमें कुछ लॉगिंग डालें और वेरिएबल को सीधे एक्सेस करने के बजाय उनका उपयोग करें।

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