Обновление приложения с предустановленным SQLite

Мое приложение использует предварительно загруженную и скопированную из /assets в data/data ( поставляет приложение с базой данных) базу данных, которая представляет собой просто одну таблицу данных о продукте и доступна только для чтения, поскольку пользователи не сохраняют в БД. Если я добавлю больше продуктов в таблицу БД, мне нужно передать это существующим пользователям. Если я обновлю свое приложение с новой БД, процесс обновления удалит старую БД, которая была скопирована из каталога ресурсов в данные / данные, что позволит сбою проверки "DBexists" при первом запуске обновленной версии, что приведет к копированию новой БД из / активы в данные / данные?

2 ответа

Решение

Короткий ответ, да, если вы поместите следующий фрагмент onUpgrade() метод:

try {
    copyDataBase("database.db");
} catch (IOException e) {
    Log.w(TAG, e);
}

Может быть стоит удалить файл БД в copyDataBase() прежде чем писать поверх него, просто чтобы уменьшить вероятность его порчи.

Примечание: здесь используется реализация, использованная в принятом ответе на вопрос, который вы связали.

Вдобавок ко всему, единственное, что я могу придумать, - это слегка злоупотреблять методом onUpgrade() в вашем SQLiteOpenHelper реализации и измените базу данных, вызвав ее с новым номером версии и заставив ее делать все, что вам нужно, в этом методе.

Сказав это, я не очень много знаю о процессе обновления приложений для Android, так что это может быть далеко.

Другие вопросы по тегам