Обновление приложения с предустановленным SQLite
Мое приложение использует предварительно загруженную и скопированную из /assets в data/data ( поставляет приложение с базой данных) базу данных, которая представляет собой просто одну таблицу данных о продукте и доступна только для чтения, поскольку пользователи не сохраняют в БД. Если я добавлю больше продуктов в таблицу БД, мне нужно передать это существующим пользователям. Если я обновлю свое приложение с новой БД, процесс обновления удалит старую БД, которая была скопирована из каталога ресурсов в данные / данные, что позволит сбою проверки "DBexists" при первом запуске обновленной версии, что приведет к копированию новой БД из / активы в данные / данные?
2 ответа
Короткий ответ, да, если вы поместите следующий фрагмент onUpgrade()
метод:
try {
copyDataBase("database.db");
} catch (IOException e) {
Log.w(TAG, e);
}
Может быть стоит удалить файл БД в copyDataBase()
прежде чем писать поверх него, просто чтобы уменьшить вероятность его порчи.
Примечание: здесь используется реализация, использованная в принятом ответе на вопрос, который вы связали.
Вдобавок ко всему, единственное, что я могу придумать, - это слегка злоупотреблять методом onUpgrade() в вашем SQLiteOpenHelper
реализации и измените базу данных, вызвав ее с новым номером версии и заставив ее делать все, что вам нужно, в этом методе.
Сказав это, я не очень много знаю о процессе обновления приложений для Android, так что это может быть далеко.