2010-06-10 9 views
6

मेरा प्रश्न है कि मुझे काफी सरल लगता है लेकिन मुझे नहीं लगता कि उत्तर होगा ... मेरे पास मेरे आवेदन में बहुत सारी सामग्री है इसे ठीक से चलाने के लिए, और मैं इसे डेटाबेस में डालने की सोच रहा हूं, और इसे बाजार में एप्लिकेशन के साथ एक एम्बेडेड डेटाबेस में वितरित करता है। एकमात्र परेशानी यह है कि मुझे यह नहीं पता कि यह कैसे करना है। मुझे पता है कि मैं अपने डेटाबेस की सामग्री के साथ एक्लिप्स डीडीएमएस से एक फ़ाइल .db निकाल सकता हूं, और मुझे लगता है कि मुझे इसे अपने एप्लिकेशन के एसेट फ़ोल्डर में रखना होगा, लेकिन एप्लिकेशन को पुन: उत्पन्न करने के लिए एप्लिकेशन को कैसे उपयोग करना है डेटाबेस? यदि आपके पास कुछ कोड या सहायता का कोई लिंक है, तो यह बहुत अच्छा होगा। धन्यवादएक वितरित एप्लिकेशन के .apk में एक डेटाबेस एम्बेड करें [एंड्रॉइड]

उत्तर

12

खैर प्राप्त करने के लिए आप क्या कह रहे हैं, तो आप अपनी संपत्ति/निर्देशिका में .db फ़ाइल डाल दिया और जगह में पहली बार यह नकल कर सकता है आप अपने अनुप्रयोग शुरू .....

final String DB_DESTINATION = "/data/data/YOUR_PACKAGE_NAME/databases/MyDatabaseFile.db"; 

// Check if the database exists before copying 
boolean initialiseDatabase = (new File(DB_DESTINATION)).exists(); 
if (initialiseDatabase == false) { 

    // Open the .db file in your assets directory 
    InputStream is = getContext().getAssets().open("MyDatabaseFile.db"); 

    // Copy the database into the destination 
    OutputStream os = new FileOutputStream(DB_DESTINATION); 
    byte[] buffer = new byte[1024]; 
    int length; 
    while ((length = is.read(buffer)) > 0){ 
     os.write(buffer, 0, length); 
    } 
    os.flush(); 

    os.close(); 
    is.close(); 
} 

जहां "प्रारंभिक डाटाबेस" कुछ झंडा है जो इंगित करता है कि ऐप पहली बार लॉन्च किया गया है या नहीं।

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

+0

ठीक है, मैं पहले एक प्रगति पट्टी का उपयोग कर रहा था, लेकिन जैसा कि मैं बहुत सारी तस्वीरें डाउनलोड कर रहा हूं, और कई एक्सएमएल पार्सिंग कर रहा हूं , इसमें काफी समय लगता है, खासकर जब आप वाईफाई – Sephy

+0

के बजाय 3 जी नेटवर्क का उपयोग करते हैं, तो यह जांचना आसान नहीं होगा कि बूलियन का उपयोग करने के बजाय डेटाबेस पहले से मौजूद है या नहीं? एप्लिकेशन बंद होने पर मैं बूलियन का ट्रैक कैसे रखूं? डीबी में प्रवेश? – Sephy

+0

यह वही है जो बूलियन का प्रतिनिधित्व करता है, मैंने इसे कार्यान्वयन अभ्यास के रूप में छोड़ दिया। मैंने उदाहरण कोड अपडेट किया है कि आप इसके बारे में कैसे जा सकते हैं। – seanhodges

1

आप मध्य-सड़क के समाधान को कार्यान्वित कर सकते हैं: उपरोक्त दृष्टिकोण का उपयोग करें, लेकिन डीबी फ़ाइल वितरित करने के बजाय इसे कहीं सर्वर पर रखें। फाइलों को प्राप्त करने में मेरे अनुभव में प्रोसेसिंग समय का केवल 10% है, बाकी में डीबी

+0

वास्तव में मेरा उद्देश्य इसे सर्वर पर डालने से बचाना था और एप्लिकेशन की स्थापना के बाद सीधे डाउनलोड को मजबूर करना था ... – Sephy

+0

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

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