Почему публикация обновления переустанавливает приложение, удаляя внутреннее хранилище данных? - PullRequest
1 голос
/ 15 марта 2011

Я разработал и приложение, а затем я опубликовал его на Android Market. После разработки нескольких улучшений я создал обновление для приложения.

Обновление было успешно опубликовано на Android Market, и устройства были обновлены. Тем не менее, приложение не было обновлено на устройствах пользователя; оно было удалено и установлено снова, данные приложения были сохранены во внутренней памяти.

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

Мое приложение работает с Android 2.0 (API 5).

1 Ответ

1 голос
/ 15 марта 2011

Если у вас есть поставщик данных и вы следовали одному из примеров, возможно, в вашем коде есть DATABASE_VERSION.Наряду с этим, возможно, что-то выглядит следующим образом:

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    LogUtils.w(mContext, "Processor", "Upgrading database from version " + oldVersion + " to "
        + newVersion + ", which will destroy all old data");
    db.execSQL("DROP TABLE IF EXISTS "+REST_TABLE_NAME);
    onCreate(db);
}

Это означает, что если вы измените DATABASE_VERSION при обновлении кода, он удалит таблицы и создаст их заново с нуля.Если это то, что происходит, у вас есть два варианта:

1) Не изменяйте DATABASE_VERSION.Конечно, это имеет смысл, только если вы не изменили свою схему, но все готово.

2) Напишите код миграции для onUpgrade.Вы можете проверить старую версию базы данных и написать код для переноса данных в новую схему.Это может быть сложно, но если ваше приложение имеет значительные пользовательские данные, может быть целесообразным.

РЕДАКТИРОВАТЬ: Просто чтобы прояснить, ваше приложение не переустанавливается в этом случае, а потому, что ваша база данныхвоссоздается, данные уничтожаются, поэтому может показаться, что они переустанавливаются.Тем не менее, ваши общие настройки не должны быть затронуты при обновлении.

...