2013-05-24 9 views
9

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

संपादित करें: ऐप के स्टार्टअप को छोड़कर परिवर्तनीय कभी नहीं बदला जाता है। मैंने पहले से ही जांच कर लिया है कि इसे कॉल करने वाले फ़ंक्शन को कभी भी एक से अधिक बार नहीं कहा जाएगा (adb logcat साबित करता है कि जब मैंने एक लॉग कहा था कि इसे कहा जा रहा है)।

कोड कुछ इस तरह है:

class UserCore 
{ 
    class UserData 
    { 
     int ID; 
     string Name; 
    } 

    public UserData User; 
    public static UserCore Instance = new UserCore(); 

    public void Login() 
    { 
     Log.d("User", "Logging in"); 
     new Throwable().printStackTrace(); 

     User = null; 
     //Fetch user data 
     User = new UserData(); 
     User.ID = ... 
     User.Name = ... 
    } 
    .... 
} 
+9

यहां कुछ कोड की आवश्यकता होगी। – Woot4Moo

+0

ऐप पुनरारंभ करें? कभी-कभी एंड्रॉइड ऐप्स चले जाते हैं। –

+0

यह शायद कहीं शून्य हो जाता है :) – Maroun

उत्तर

15

यह आम तौर पर होगा यदि उपयोगकर्ता फोन सो जाओ की सुविधा देता है और इस प्रणाली की आवश्यकता है या स्मृति साफ करता है। सूचना को रखना सबसे अच्छा है कि आपको एक स्थिर चर में रखने के बजाय डिस्क कैश में लंबी अवधि के दौरान आवश्यकता होगी। जैसा कि आप जानते होंगे कि एंड्रॉइड सिस्टम में ऐप को साफ़ करने के बारे में अंतिम बात है, केवल एक स्थिर चर में बहुत कम बातचीत के लिए आपको डेटा रखना चाहिए।

+2

तो मूल रूप से यदि मैं डेटा रखना चाहता हूं जो एप्लिकेशन के पूरे जीवनकाल को बनाए रखेगा तो मुझे इसे एक फ़ाइल में सहेजना चाहिए ताकि जब भी मुझे इसे वैश्विक स्तर पर रखने की आवश्यकता हो तो मैं इसे प्राप्त कर सकूं। अगर आप मुझसे पूछें तो यह बेवकूफ है, लेकिन मुझे लगता है कि मेरे पास वास्तव में कोई विकल्प नहीं है ... –

+2

@LittleCodingFox [यह जवाब] देखें (http://stackoverflow.com/a/8023552/418609) अधिक जानकारी के लिए। यह कहने के लिए व्यक्तिपरक है कि यह तंत्र बेवकूफ है, भूलें कि आप सीमित वातावरण में नहीं चल रहे हैं; और एंड्रॉइड पर कई [भंडारण विकल्प] (http://developer.android.com/guide/topics/data/data-storage.html) हैं। – adrianp

+1

http://portabledroid.wordpress.com/2012/05/04/singletons-in-android/ –

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