Android обрабатывает обновления приложений и изменения базы данных

Я в основном закончил разработку приложения для Android, которое использует базы данных SQLite, которые я копирую в область пользовательских данных на устройстве, например /data/data/com.company.app/databases/users.db

Я не уверен, как происходит процедура обновления приложений на рынке, и я также не уверен, как я могу ее протестировать.

В настоящее время я проверяю, существует ли база данных на устройстве и скопируйте ее, если она отсутствует (обычно это происходит только при первом запуске). Что произойдет, если у меня есть новая версия базы данных в моем обновленном приложении? Будет ли обновление на рынке уничтожить данные пользователя, чтобы он скопировал мою новую базу данных при следующем запуске?

Что произойдет в будущем, если я сделаю изменения базы данных / добавлю записи / etc и упакую это с новым приложением? Будет ли эта база данных не перезаписывать старую базу данных?

В противном случае, чтобы избежать копирования и переопределения баз данных из набора приложений при каждом запуске, есть ли способ проверить размер и дату файлов базы данных и только скопировать, если база данных в комплекте более новая?

Если кто-то нуждается в разъяснении, пожалуйста, спросите.

Solutions Collecting From Web of "Android обрабатывает обновления приложений и изменения базы данных"

Я делаю что-то подобное. То, что я сделал, это установить версию базы данных, а затем, когда я проверяю, существует ли база данных, я также должен убедиться, что она является правильной версией. Если это не так, я сохраняю избранное пользователя из базы данных, вычищаю и восстанавливаю свой 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);