تحديثات تطبيق مقبض Android وتغييرات قاعدة البيانات

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

  •  30-09-2019
  •  | 
  •  

سؤال

لقد انتهيت بشكل أساسي

لست متأكدًا من كيفية إجراء إجراء تحديث تطبيق Marketplace وأنا غير متأكد أيضًا من كيفية اختباره.

أتحقق حاليًا ما إذا كانت قاعدة البيانات موجودة على الجهاز ونسخها إذا لم يكن ذلك (بشكل عام يحدث فقط عند الإطلاق الأول على الإطلاق). ماذا يحدث إذا كان لدي إصدار جديد من قاعدة البيانات في تطبيقي المحدث؟ هل سيقوم تحديث Marketplace بمسح بيانات المستخدم بحيث يقوم بنسخ قاعدة البيانات الجديدة الخاصة بي عند الإطلاق التالي؟

ماذا يحدث في المستقبل إذا قمت بإجراء تغييرات في قاعدة البيانات/إضافة سجلات/إلخ وحزم هذا مع التطبيق الجديد؟ ألا تقوم قاعدة البيانات هذه بالكتابة فوق قاعدة البيانات القديمة؟

خلاف ذلك ، لتجنب نسخ قواعد البيانات وإلغاءها من حزمة التطبيق في كل إطلاق ، هل هناك طريقة للتحقق من حجم ملفات قاعدة البيانات وتاريخها ونسخها فقط إذا كانت قاعدة البيانات الموجودة في الحزمة أحدث؟

إذا كان أي شخص يحتاج إلى توضيح من فضلك اسأل.

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

المحلول

أنا أفعل شيئًا مشابهًا. ما فعلته هو تعيين إصدار قاعدة البيانات ، ثم عندما أتحقق مما إذا كانت قاعدة البيانات موجودة ، أتأكد أيضًا من الإصدار الصحيح. إذا لم يكن الأمر كذلك ، فأنا أحفظ مفضلة المستخدم من قاعدة البيانات ، ومسح وإعادة توزيع ديسيبل ، ثم أعيد مفضلات المستخدم.

هذا هو على الترقية

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    if (oldVersion == 2) {

        System.out.println("Performing upgrade!");
        openDataBase();
        // save the old favorites
        Cursor mCursor = getFavorites();
        ArrayList<Stop> favs = allCursorToStops(mCursor);
        mCursor.close();

        deleteRecreate(db);

        openDataBase();

        for (int i = 0; i < favs.size(); i++)
            setFavorite(favs.get(i));

        close();

    } else {

        deleteRecreate(db);

    }
}

هنا هو المكان الذي أتحقق فيه من الوجود/إذا كنت بحاجة إلى الترقية وما إلى ذلك

    boolean dbExist = checkDataBase();

    if(dbExist){
        // check if we need to upgrade
        openDataBase();
        int cVersion = myDataBase.getVersion();
        close();
        if(cVersion != VERSION)
            onUpgrade(myDataBase, myDataBase.getVersion(), VERSION);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top