2010-01-09 5 views
6

हम एक एंड्रॉइड ऐप डिज़ाइन कर रहे हैं जिसमें कई गतिविधियां हैं जो विज़ार्ड में काम कर रही हैं - अंतिम गतिविधि (# 6) तक पहुंचने के लिए उपयोगकर्ता को # 1 गतिविधि # 5 से गतिविधि # 5 से गुजरना चाहिए।Android पर सर्वोत्तम प्रथाओं पूरे आवेदन सत्र के लिए गतिविधियों deathes/पुनरारंभ के बीच डेटा रखने के लिए क्या है?

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

दुर्भाग्य से हम यह जान लिया है इस दृष्टिकोण में विफल रहता है - आवेदन वर्ग उदाहरण भी ओएस द्वारा मारा जा सकता है की तरह लग रहा है (यह विशेष रूप से बनाम 1.5 एंड्रॉयड 1.6 पर खोज की थी)। क्या हमारी अपेक्षाएं इस दृष्टिकोण पर गलत हैं (हमें लगता है कि एप्लिकेशन क्लास इंस्टेंस हमेशा पूरे ऐप सत्र के लिए रहता है)?

तो सवाल है - क्या Android पर सर्वोत्तम प्रथाओं पूरे आवेदन सत्र के लिए गतिविधियों के बीच डेटा रखने के लिए deathes/पुनरारंभ है?

उत्तर

9

हम एक Android ऐप्लिकेशन कि कई गतिविधियों जो तरह से जैसे एक जादूगर में काम कर रहे हैं डिज़ाइन कर रहे हैं # 6)।

क्या आप वाकई उन्हें अलग-अलग गतिविधियों के रूप में लागू करना चाहिए? क्यों नहीं एक भी गतिविधि ViewFlipper या कुछ का उपयोग कर जादूगर राज्यों के बीच ले जाने के लिए?

हमारी उम्मीदों (हमें लगता है कि आवेदन वर्ग उदाहरण हमेशा पूरे एप्लिकेशन सत्र के लिए रहता है) इस दृष्टिकोण पर गलत कर रहे हैं?

एप्लिकेशन क्लास इंस्टेंस हमेशा पूरे ऐप सत्र, AFAIK के लिए रहता है। एक बार आपकी सभी गतिविधियां नष्ट हो जाएंगी, हालांकि, आवेदन भी नष्ट हो जाएगा।

तो सवाल है - क्या एंड्रॉयड पर सबसे अच्छा प्रथाओं गतिविधियों deathes के बीच डेटा रखने के लिए/है पूरे आवेदन सत्र के लिए पुन: प्रारंभ होता?

  1. का प्रयोग करें एक Service - अगर यह रैम से बाहर निकाल दिया जाता है, सिर्फ खरोंच से
  2. उपयोग एक डेटाबेस
  3. एक फ़ाइल का उपयोग शुरू

या, सबसे अच्छा: डॉन ' इस मामले में कई गतिविधियों का उपयोग नहीं करते हैं। एक जादूगर एक तार्किक बात है; इसे इस तरह से इलाज करें और इसे एक ही गतिविधि बनाएं। onSaveInstanceState() के माध्यम से अपने राज्य को कायम रखें, और आप सेट हैं।

+2

मैं वास्तव में इस सवाल का जवाब है। यह एक गतिविधि के रूप में इस लागू करने के लिए क्लीनर हो सकता है, फिर भी आपको ऐसी स्थितियों जैसे बैक बटन जिसे आपने पिछले डिफ़ॉल्ट रूप से "स्क्रीन" करने के लिए नहीं ले जाएगा पर विचार करने की क्या ज़रूरत है। हां बस अपनी प्रक्रिया (और इसलिए फ्रेमवर्क ऑब्जेक्ट्स जैसे एप्लिकेशन) को किसी भी समय मार दिया जा सकता है। किसी सेवा का उपयोग करने से मदद मिल सकती है, लेकिन यह केवल अपरिहार्य देरी कर सकती है। यह FAQ उपयोगी हो सकता है: http://developer.android.com/guide/appendix/faq/framework.html#3 – James

0

यदि उपयोगकर्ता इनपुट करता है और आपको स्टोर करने की आवश्यकता है तो केवल प्राइमेटिव्स का एक सेट है, आप बस SharedPreferences को लगातार स्टोरेज के रूप में उपयोग कर सकते हैं। उपयोगकर्ता से # 1 गतिविधि के गतिविधि # 5 पास करना चाहिए (अंतिम गतिविधि को पाने के लिए -

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