Обновления приложений обрабатывают Android и изменения базы данных
-
30-09-2019 - |
Вопрос
Я в основном завершил разработку приложения для Android, который использует базы данных SQLite, которые я копирую в область пользовательских данных на устройстве, например, /data/data/come.company.App /databases/users.db
Я не уверен, как проводится процедура обновления на рынке приложения, и я также не уверен, что я могу проверить его.
В настоящее время я проверяю, существует ли база данных на устройстве и скопируйте его, если она не будет (вообще только происходит только на первом запуске). Что произойдет, если у меня есть новая версия базы данных в моем обновленном приложении? Будет ли обновление рынка протрите пользовательские данные, чтобы он скопировал мою новую базу данных в следующий запуск?
Что происходит в будущем, если я сделаю изменения в базе данных / Добавить записи / и т. Д. и упаковать это с новым приложением? Будет ли эта база данных не перезаписать старую базу данных?
В противном случае, чтобы избежать копирования и переопределения баз данных из пакета приложения на каждый запуск, есть ли способ проверить размер и дату файлов базы данных и только копировать, если база данных в комплекте новее?
Если кому-то нужно уточнить, пожалуйста, спросите.
Решение
Я делаю что-то подобное. То, что я сделал, установите версию базы данных, а затем, когда я проверю, существует ли база данных, я также должен убедиться, что это правильная версия. Если это не так, я сохраняю пользователь избранные из базы данных, протрите и верните мою БД, а затем верните пользователь избранные.
Это мой на модернизации
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);