दिलचस्प पोस्ट
सभी 4 दिशाओं में कड़ी चोट की पहचान कैसे करें आवेदन निर्देशिका प्राप्त करें मैं कई स्कीमा पैकेज जेक्सब / मैवेन को कैसे बताऊं? एंड्रॉइड ==> मेमोरी विश्लेषण ==> एक्लिप्स स्मृति विश्लेषक? जावास्क्रिप्ट नेस्टेड फ़ंक्शन अजगर का उपयोग कर स्ट्रिंग से एक चरित्र को कैसे हटाया जाए? गतिशील रूप से विद्यमान टैब फिर से बनाने के बिना चमकदार रूप से भूखंडों के साथ टैब बनाना जब 'बैक' बटन को एक नवबार पर दबाया जाता है, तब पता लगा रहा है मैं अपने सी # एप्लिकेशन के लिए एक उत्पाद कुंजी कैसे बना सकता हूं? नेटवर्क शेयर से कनेक्ट करते समय उपयोगकर्ता नाम और पासवर्ड कैसे प्रदान करें जावास्क्रिप्ट लिंक, "#" या "जावास्क्रिप्ट: शून्य (0)" के लिए कौन सी "href" मान का उपयोग करना चाहिए? मैं ArrayList से दोहराए गए तत्वों को कैसे निकालूं? jQuery का उपयोग करके एक हाइपरलिंक अक्षम करें जावा फ़ाइल का आकार कुशलतापूर्वक मिलता है उच्च रिज़ॉल्यूशन इमेज – आउटऑफममेरीएरर

एंड्रॉइड ऐप में डेटा को कैसे बचाया जाए

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

वेब के समाधान से एकत्रित समाधान "एंड्रॉइड ऐप में डेटा को कैसे बचाया जाए"

आपके पास दो विकल्प हैं, और मैं आपके चयन को छोड़ दूँगा।

  1. साझा वरीयताएँ

    यह एंड्रॉइड के लिए एक अनूठी रूपरेखा है जो कि आपको एक महत्वपूर्ण-मूल्य ढांचे में आदिम मानों (जैसे कि int , boolean, और String , हालांकि सख्ती से String एक आदिम नहीं है) को संग्रहित करने की अनुमति देता है। इसका मतलब यह है कि आप मूल्य को एक नाम देते हैं, कहते हैं, "होमस्कोर" और मूल्य को इस कुंजी में संग्रहीत करें

     SharedPreferences settings = getApplicationContext().getSharedPreferences(PREFS_NAME, 0); SharedPreferences.Editor editor = settings.edit(); editor.putInt("homeScore", YOUR_HOME_SCORE); // Apply the edits! editor.apply(); // Get from the SharedPreferences SharedPreferences settings = getApplicationContext().getSharedPreferences(PREFS_NAME, 0); int homeScore = settings.getInt("homeScore", 0); 
  2. आंतरिक स्टोरेज

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

     int homeScore; byte[] homeScoreBytes; homeScoreBytes[0] = (byte) homeScore; homeScoreBytes[1] = (byte) (homeScore >> 8); //you can probably skip these two homeScoreBytes[2] = (byte) (homeScore >> 16); //lines, because I've never seen a //basketball score above 128, it's //such a rare occurance. FileOutputStream outputStream = getApplicationContext().openFileOutput(FILENAME, Context.MODE_PRIVATE); outputStream.write(homeScoreBytes); outputStream.close(); 

अब, आप बाहरी संग्रहण में भी देख सकते हैं, लेकिन मैं इस विशेष मामले में यह अनुशंसा नहीं करता, क्योंकि बाहरी भंडारण बाद में नहीं हो सकता है (ध्यान दें कि यदि आप इसे चुनते हैं, तो उसे अनुमति की आवश्यकता है)

ओपी "बचा" समारोह की मांग कर रहा है, जो केवल प्रोग्राम के निष्पादन में डेटा को संरक्षित करने से ज्यादा नहीं है (जिसे आपको ऐप के लिए कुछ भी करना चाहिए।)

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

तो आपको वास्तव में एक बहु बिंदु प्रणाली की आवश्यकता है:

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

2) पर लागू करें onPause() इस पद्धति में, एक SharedPreferences संपादक बनाएं और अगली बार ऐप को शुरू करने के लिए आपको जो भी स्टेटस की ज़रूरत है उसे सहेजने के लिए इसका उपयोग करें यह मुख्य रूप से उपयोगकर्ताओं की वरीयताओं (इसलिए नाम) के होते हैं, लेकिन ऐप के स्टार्ट-अप राज्य से संबंधित कुछ और भी यहां पर जाना चाहिए। मैं यहाँ स्कोर स्टोर नहीं करूँगा, केवल सामान जिसे आपको ऐप को पुनरारंभ करने की आवश्यकता है उसके बाद, onCreate() , जब भी कोई बंडल ऑब्जेक्ट नहीं होता है, उन सेटिंग्स को याद करने के लिए साझा किए गए संदर्भ इंटरफ़ेस का उपयोग करें।

3 ए) स्कोर जैसी चीजों के लिए, आप ऊपर माथियास की सलाह का पालन कर सकते हैं और getFilesDir() में getFilesDir() openFileOutput() , आदि का उपयोग करते हुए getFilesDir() गए निर्देशिका में स्कोर को स्टोर कर सकते हैं। मुझे लगता है कि यह निर्देशिका एप के लिए निजी है और मुख्य भंडारण में रहता है, जिसका अर्थ है कि अन्य ऐप्स और उपयोगकर्ता डेटा तक पहुंचने में सक्षम नहीं होंगे। अगर यह आपके साथ ठीक है, तो शायद यह जाने का तरीका है

3 बी) यदि आप अन्य ऐप्स या उपयोगकर्ता को डेटा तक सीधे पहुंच प्राप्त करना चाहते हैं, या यदि डेटा बहुत बड़ा होने जा रहा है, तो एसडीसीडी जाने का तरीका है अन्य अनुप्रयोगों के साथ टकराव से बचने के लिए com / user1446371 / basketballapp / जैसे किसी निर्देशिका का नाम चुनें (जब तक कि आप सुनिश्चित न हों कि आपका ऐप नाम काफी अनूठा है) और उस निर्देशिका को sdcard पर बनाते हैं जैसा कि मेथियास ने बताया, आपको पहले यह पुष्टि करनी चाहिए कि एसडीसीडी माउन्ट है।

 File sdcard = Environment.getExternalStorageDirectory(); if( sdcard == null || !sdcard.isDirectory()) { fail("sdcard not available"); } File datadir = new File(sdcard, "com/user1446371/basketballapp/"); if( !datadir.exists() && !datadir.mkdirs() ) { fail("unable to create data directory"); } if( !datadir.isDirectory() ) { fail("exists, but is not a directory"); } // Now use regular java I/O to read and write files to data directory 

मैं आपके डेटा के लिए सरल सीएसवी फाइलों की अनुशंसा करता हूं, ताकि अन्य एप्लिकेशन उन्हें आसानी से पढ़ सकें।

जाहिर है, आपको उन गतिविधियों को लिखना होगा जो कि "बचाने" और "खुले" संवाद की अनुमति देते हैं। मैं आम तौर पर सिर्फ ओपनइंटेंट फ़ाइल प्रबंधक को कॉल करता हूं और इसे काम करने देता हूं इसके लिए आपके उपयोगकर्ताओं को इन सुविधाओं का उपयोग करने के लिए ओपनintન્ટ્સ फ़ाइल प्रबंधक इंस्टॉल करने की आवश्यकता है, फिर भी

ऑन क्रेट में:

 SharedPreferences sharedPref = getSharedPreferences("mySettings", MODE_PRIVATE); String mySetting = sharedPref.getString("mySetting", null); 

OnDestroy या समकक्ष में:

 SharedPreferences sharedPref = getSharedPreferences("mySettings", MODE_PRIVATE); SharedPreferences.Editor editor = sharedPref.edit(); editor.putString("mySetting", "Hello Android"); editor.commit(); 

साझा किए गए संदर्भों का उपयोग करें, http://developer.android.com/reference/android/content/SharedPreferences.html

यहां एक नमूना है: http://developer.android.com/guide/topics/data/data-storage.html#pref

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

आपके डेटा को स्टोर करने के लिए बहुत सारे विकल्प हैं और एंड्रॉइड आपको किसी को चुनने की पेशकश करता है आपका डेटा संग्रहण विकल्प निम्न हैं:

साझा वरीयता कुंजी-मान जोड़े में निजी आदिम डेटा संग्रहीत करें। आंतरिक संग्रहण स्टोर डिवाइस मेमोरी पर निजी डेटा। बाहरी संग्रहण साझा किए गए बाह्य संग्रहण पर सार्वजनिक डेटा संग्रह। SQLite डेटाबेस एक निजी डेटाबेस में संरचित डेटा स्टोर करें। अपने स्वयं के नेटवर्क सर्वर से वेब पर नेटवर्क कनेक्शन स्टोर डेटा

उदाहरण और टाटू के लिए यहां देखें

  1. साझा वरीयताएँ: उच्च स्कोर के लिए एंड्रॉइड साझा प्राथमिकताएं उदाहरण?

  2. क्या आपके आवेदन में "बाह्य भंडारण मीडिया" तक पहुंच है? यदि ऐसा होता है तो आप फ़ाइल में केवल मूल्य (टाइमस्टैम्प के साथ संग्रहीत) लिख सकते हैं और इसे सहेज सकते हैं टाइमस्टैम्प आपको प्रगति दिखाने में मदद करेगा यदि आप इसके लिए क्या चाहते हैं। {एक स्मार्ट समाधान नहीं।}

मेरी राय में db4o जाने का सबसे आसान तरीका है यहां आप एक ट्यूटोरियल पा सकते हैं: http://community.versant.com/documentation/reference/db4o-7.12/java/tutorial/

और यहां आप लाइब्रेरी डाउनलोड कर सकते हैं:

http://www.db4o.com/community/download.aspx?file=db4o-8.0-java.zip

(बस डीबी 4ओ-8.0 …- सब-जावा 5.जर को अपनी प्रोजेक्ट के लिब्स फ़ोल्डर में लिब डाइरेक्टरी में डाल दीजिए। अगर इसमें कोई लिब्स फ़ोल्डर नहीं है तो इसे बनाएं)

जैसा कि db4o एक ऑब्जेक्ट ओरिएंटेड डेटाबेस सिस्टम है, आप सीधे ऑब्जेक्ट को डेटाबेस में सहेज सकते हैं और बाद में उन्हें वापस प्राप्त कर सकते हैं।

कृपया एक बात न भूलें – जब आप ऐप को अनइंस्टॉल करते हैं तो आंतरिक स्टोरेज डेटा हटा दिया जाता है। कुछ मामलों में यह "अप्रत्याशित सुविधा" हो सकती है तो बाहरी संग्रहण का उपयोग करना अच्छा है।

भंडारण के बारे में Google दस्तावेज़ – कृपया विशेष रूप से getExternalStoragePublicDirectory पर देखें