قم بتضمين قاعدة بيانات في .APK للتطبيق الموزع [Android

StackOverflow https://stackoverflow.com/questions/3013021

سؤال

سؤالي هو أعتقد أنه بسيط للغاية ولكني لا أعتقد أن الإجابة ستكون ... لدي الكثير من المحتوى قاعدة البيانات ، و قم بتوزيعه في قاعدة بيانات مضمنة مع التطبيق في السوق. المشكلة الوحيدة هي أنه ليس لدي أي فكرة عن كيفية القيام بذلك. أعلم أنه يمكنني استخراج ملف .db من Eclipse DDMs مع محتوى قاعدة البيانات الخاصة بي ، وأفترض أنني بحاجة إلى وضعه في مجلد الأصول في طلبي ، ولكن بعد ذلك كيفية جعل التطبيق يستخدمه لتجديد قاعدة بيانات التطبيق ؟ إذا كان لديك أي رابط لبعض التعليمات البرمجية أو المساعدة ، فسيكون ذلك رائعًا. شكرًا

هل كانت مفيدة؟

المحلول

حسنًا ، لتحقيق ما تطلبه ، يمكنك وضع ملف .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();
}

عندما يكون "initialatedatabase" بعض العلم الذي يشير إلى ما إذا كان التطبيق قد تم إطلاقه لأول مرة.

على الرغم من أنك إذا كنت تبحث في تخزين الكثير من البيانات ، كما ذكرت: أوصي بشدة بتجنب انتفاخ ملف APK معه ، واستخدم اتصال الإنترنت لتنزيل سجلات قاعدة البيانات (من خادم مستضاف) بعد التطبيق أطلقت. وبهذه الطريقة ، يمكنك إظهار شريط تقدم يشير إلى المستخدم لماذا ينتظرون وقتًا طويلاً لبدء استخدام التطبيق. إن جعل APK كبيرًا بشكل خاص يردع الأشخاص عادةً من تثبيته في المقام الأول.

نصائح أخرى

يمكنك تنفيذ حل منتصف الطريق: استخدم النهج أعلاه ، ولكن بدلاً من توزيع ملف DB ، ضعه على الخادم في مكان ما. في تجربتي ، لا يوجد سوى 10 ٪ من وقت المعالجة ، والباقي هو تحليل الصور وتسلسلها إلى DB

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top