Cristian здесь говорит: ваши данные приложения будет оставаться при установке обновлений пользователя.
Но он должен быть таким же, package name
чтобы обнаруживать обновление предыдущего приложения.
EboMike предупреждает пользователя Android, что обновление приложения может привести к потере данных из старой версии приложения? говорит:
Откровенно говоря, потеря данных из-за обновления недопустима.
Редактировать :
Обычно SharedPreferences (как и другие пользовательские данные) сохраняются во время процесса обновления, но иногда из-за какой-то « неизвестной » проблемы данные могут быть потеряны, и я думаю, это вне вашего контроля. Итак, вы можете просто поверить, что SharedPreferences будут сохранены ( см. Здесь ).
Итак, если вы хотите избежать очистки данных пользователя в процессе обновления, вам необходимо сохранить основные данные во внешнем хранилище (это может быть съемный носитель, например, SD-карта, или внутреннее несъемное хранилище), а не закрыто для вашего приложения. Или, по крайней мере, отложите, чтобы пользователь мог сделать резервную копию данных перед обновлением. Затем при первом запуске вашего (обновленного) приложения проверьте, есть ли файл резервной копии во внешнем хранилище или нет.
Если вы хотите знать, что должно / может произойти при обновлении приложения? Я не сделал любое описание хорошо для this.It осложняется и относительной с Android Security
, Application signing
, copy protection
и другие topics.I означает , что если вы измените состояние вашего приложения в любых указанных выше областях, это вызывает другой результат.
Например, если вы CHANGED COPY PROTECTION FROM ON to OFF OR OFF to ON
, ваше приложение будет обновлено, но все ваши общие настройки будут потеряны, доступ к файлам будет невозможен и ...
Хотя вы должны быть осторожны в условиях, потому что ваше новое приложение being considered
является обновлением для предыдущего приложения (см. Вещи, которые не могут измениться ).
Также вы должны позаботиться о своем коде, это может быть вызвано удалением данных ваших баз данных (см. Приложение для обновления с предварительно загруженным SQLite ).
Но в конечном итоге, если быть осторожным, можно сказать:
Процесс обновления заменяет только файл apk (и то, что в нем, например, чертежи, ...), и не изменяет базы данных, общие настройки и любые другие файлы, созданные во время выполнения (вероятно, в этом случае новое приложение устанавливается с UID, равный UID предыдущего приложения).
Вы можете увидеть эти страницы для более подробной информации:
Помогите!? Обновление нашего приложения на рынке удаляет сохраненные SharedPreferences.
Защита от копирования Market полностью закрывает доступ к файлам после обновления.
Может кто-нибудь объяснить процесс обновления приложения?
После более чем 4-часовой отладки я обнаружил, что сохраняю модель как строку, сериализуя ее. Сериализуемый класс имеет уникальный идентификатор по имени serialVersionUID , который устанавливается по умолчанию во время выполнения, и идентификатор также вычисляется по имени класса, интерфейсов и имен переменных. Я узнал, что изменил класс модели, добавил переменную, а затем обновил приложение. Поскольку класс теперь изменен, поэтому был установлен новый serialVersionUID и, следовательно, при обновлении он не смог десериализовать строку и создать модель и выдавал исключение java.io.InvalidClassException
Явно установите serialVersionUID, чтобы избежать этой проблемы
static final long serialVersionUID = 42L;
источник
Думаю, когда я последний раз обновлял свое приложение через Google Play, на sharedPreferences это не повлияло.
Я использовал их для автоматического входа в систему, и после обновления он это сделал.
Это было месяц назад, моя память могла стать нечеткой, так что лучше прислушиваться и к мнению других людей.
источник