2010-07-08 20 views
9

मैंने एंड्रॉइड पर एक गेम विकसित किया। मैं वर्तमान में डेटाबेस में अधिकांश गेम आंकड़ों को सहेज रहा हूं। हालांकि ऐप डीबी में एक से अधिक पंक्ति का उपयोग नहीं करता है। अब मुझे कुछ नए आंकड़े पेश करने में दिलचस्पी है, लेकिन इससे मेरा डीबी फिर से स्थापित हो जाएगा और इस प्रकार हर किसी की प्रगति को स्पष्ट कर देगा। भविष्य में इससे बचने के लिए मैं इसके बजाय साझा आंकड़ों के साथ गेम आंकड़ों को संग्रहित करने पर विचार कर रहा हूं। मेरा सवाल यह है कि समस्या होने से पहले कितनी अलग चीजें संग्रहीत की जा सकती हैं। कुल मिलाकर मैं लगभग 40 मान, सभी पूर्णांक संग्रहित करूँगा।Android साझा की गई सीमाएं सीमाएं?

+0

40 पूर्णांक साझा किए गए संदर्भ –

उत्तर

18

साझा किए गए संदर्भ xml फ़ाइलों को लिखे गए हैं, इसलिए एंड्रॉइड पर फ़ाइल का अधिकतम आकार यह है कि SharePreferences xml फ़ाइल कितनी बड़ी हो सकती है। मैं सुरक्षित रूप से कह सकता हूं कि 40 पूर्णांक मान कोई समस्या नहीं होगी।

किसी साझा किए गए संदर्भ फ़ाइल में किसी मान का अधिकतम आकार उस मान के अधिकतम आकार तक सीमित है जिसे आप स्टोर करने का प्रयास कर रहे हैं। (मतलब है कि आप स्ट्रिंग मान से अधिक स्ट्रिंग मान नहीं डाल सकते हैं जो जावा में हो सकता है।)

केवल एक चीज जो मैं सुझाऊंगा, संपादन को जितना संभव हो सके बैच करना सुनिश्चित कर रहा है (मतलब .commit() प्रत्येक परिवर्तन नहीं है) और प्रत्येक परिवर्तन के लिए एक नया संपादक भी नहीं बनाते हैं। (ये सिर्फ अच्छे अभ्यास हैं।)

SharedPreferences settings = getSharedPreferences(PREFS_FILE_NAME, 0); 
SharedPreferences.Editor editor = settings.edit(); 
editor.putInt("firstValue", mFirst); 
editor.putInt("secondValue", mSecond); 
editor.putInt("thirdValue", mThird); 

// Commit the edits! (As infrequently as possible) 
editor.commit(); 
+3

"जावा में स्ट्रिंग्स से अधिक लंबा हो सकता है" - स्ट्रिंग्स में 2^31 - 1 = 2 बिलियन वर्ण हो सकते हैं। खैर, यह तब फोन के आंतरिक भंडारण पर भरोसा कर सकता है। –

7

मुझे किसी भी सीमा के बारे में पता नहीं है, लेकिन आपकी समस्या के बारे में हर किसी की प्रगति को मिटा दिया जा रहा है। आप अपने SQLite क्लास में अपग्रेड विधि को ओवरराइड कर सकते हैं और फिर प्रत्येक डेटाबेस को नए डेटाबेस में माइग्रेट कर सकते हैं।

+2

में संग्रहीत करने के लिए ठीक हैं। नोटपैड उदाहरण देखें - आप नए कॉलम जोड़ने के लिए वैकल्पिक तालिका का उपयोग कर सकते हैं। या आप एक पूरी नई टेबल जोड़ सकते हैं। आप SharePreferences पर स्विच कर सकते हैं, लेकिन चूंकि आप पहले से ही डेटाबेस दृष्टिकोण के लिए गए हैं, इसलिए आप इसके साथ चिपके रह सकते हैं। – EboMike

+0

मुझे लगता है कि मैं साझा किए गए संदर्भ मॉडल को आजमाने के लिए जा रहा हूं और देख सकता हूं कि मुझे और कौन पसंद है। मैं डीबी को चारों ओर रखूंगा हालांकि किसी बिंदु पर मैं कई सहेजे गए गेमों की अनुमति देने की योजना बना रहा हूं। आल्टर टेबल के बारे में टिप के लिए धन्यवाद, यह मुझे साझा करने के लिए माइग्रेट करने में सहायता करेगा और सभी की प्रगति को बचाएगा। – Tim

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