2011-11-17 16 views
6

एंड्रॉइड 2.1+ का उपयोग करना। मेरे पास एक ऐसी सेवा है जो ओएस द्वारा समय-समय पर मारे जाती है (मुझे लगता है कि स्मृति दबाव के कारण)।मारे गए एंड्रॉइड सेवा और स्थैतिक चर

यह सेवा कक्षाओं के स्थिर सदस्य क्षेत्रों का उपयोग करके कुछ राज्यों को बनाए रखती है। मैं ओएस द्वारा सेवा को मारने और पुनरारंभ करने के बावजूद स्थिर क्षेत्रों को अपने मूल्यों को रखने की उम्मीद कर रहा हूं।

लेकिन ऐसा लगता है कि ऐसा नहीं होता है। पुनरारंभ करने के बाद, स्थैतिक चर डिफ़ॉल्ट मान पर रीसेट कर दिए जाते हैं। क्या ऐसा होने वाला है? क्या मुझे मारने/पुनरारंभ करने के बावजूद लगातार राज्य रखने के लिए एक और तरीका उपयोग करना चाहिए?

उत्तर

6

हां, यह तब होता है जब आपकी सेवा मारे जाती है। कार्यक्रम स्मृति से बाहर निकाला जाता है, और जब इसे स्मृति में पुनः लोड किया जाता है, तो स्थैतिक चर के लिए डिफ़ॉल्ट मान सभी मानते हैं। एक और तरीका रखें, आपके प्रोग्राम के लिए बाइट कोड निष्पादन से निष्पादन में परिवर्तित नहीं हो सकता है।

इसे आम तौर पर राज्य रखने के लिए स्थिर चर का उपयोग करने से बुरा माना जाता है। एसकलाइट डेटाबेस की तरह, उन्हें मौजूदा स्टोरेज में संग्रहीत करने का प्रयास करें।

+1

मैं यह भी निर्दिष्ट करता हूं कि स्थिर फ़ील्ड रीसेट होने के बाद से ओएस पूरे ऐप जावा प्रक्रिया को मारता है। और हाँ यह समय-समय पर होता है, इस पोस्ट को जांचें - http://stackoverflow.com/questions/708012/android-how-to-declare-global-variables/4642069#4642069 –

+1

क्या Android वास्तव में लगातार रखने के लिए कोई साधन नहीं प्रदान करता है इसे हर बार फ्लैश करने के लिए लिखने से राज्य? (उदाहरण के लिए, ऑनस्ट्रोय को कॉल करने की गारंटी नहीं है !!!)? मेरी सेवा में बहुत कम स्थिति बदलती है और इससे बैटरी के उपयोग में वृद्धि होगी और फ्लैश वेयरआउट तेज हो जाएगा यदि मुझे हर बार राज्य में बदलावों को छूना पड़ता है! – Michael

+0

@ माइकल [ऑनस्ट्रोय विधि के लिए प्रलेखन] (https://developer.android.com/reference/android/app/Activity.html#onDestroy()): नोट: इस विधि को इस बात पर भरोसा न करें डेटा बचाने के लिए एक जगह! उदाहरण के लिए, यदि कोई गतिविधि किसी सामग्री प्रदाता में डेटा संपादित कर रही है, तो उन संपादनों को या तो रोकें() या ऑनवेस्टेंसस्टेट (बंडल) पर किया जाना चाहिए, यहां नहीं। –

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