Что произойдет с SharedPreferences при обновлении приложения для Android?
Я сохранил настройки пользователя в SharedPreferences в моем приложении. Что произойдет с SharedPreferences, когда я обновлю приложение через Google Play Store до новой версии приложения?
будут ли SharedPrefernces по-прежнему там после обновления или они будут удалены?
до сих пор я не нашел ответа в интернете или Stackoverflow (могу ли я искать с неправильными ключевыми словами?).
можете ли вы указать мне на некоторые ссылки, которые они описывают это процесс?
Edit:
Между тем я нашел и другой ответ: SharedPreferences поведение при обновлении/удалении
Edit 2:
С тех пор прошло совсем немного, когда я впервые задал этот вопрос, я недавно узнал, что с Android 6.0 (API 23) также можно использовать функцию автоматического резервного копирования для безопасное ваши общие предпочтения, как описано Google здесь. Просто добавьте allowBackup="true" в своем AndroidManifest.xml файл.
3 ответов:
Кристиан здесь говорит: ваши данные приложения будут оставаться, когда пользователь устанавливает обновления.
но это должно быть с тем же
package nameдля обнаружения в качестве обновления предыдущего приложения.EboMike в предупреждение пользователей Android, что обновление приложения может привести к потере данных из старой версии приложения? говорит:
откровенно говоря, потери данных из-за обновления неприемлемый.
Edit:
обычно, SharedPreferences(а также другие пользовательские данные) будут сохранены во время процесса обновления, но иногда, из-за некоторых "неизвестный
Я думаю, что когда я обновил свое приложение в последний раз через Google Play, sharedPreferences не были затронуты.
Я использовал их для автоматического входа в систему, и после обновления он сделал это.
Это было месяц назад, моя память могла стать нечеткой, поэтому лучше услышать мнения других людей тоже.
после отладки в течение 4 часов я узнал, что я сохранил модель как строку сериализации. Сериализуемый класс имеет уникальный идентификатор по фамилии serialVersionUID, который устанавливается по умолчанию во время выполнения и идентификатор вычисляется по имени класса, интерфейсов и имен переменных, а также. Я узнал, что я изменил класс модели, добавил переменную, а затем обновил приложение. Так как класс теперь и новый serialVersionUID был установлен и, следовательно, на обновление , он не смог десериализовать строку и создать модель и давал java.io. InvalidClassException
явно установите serialVersionUID, чтобы избежать этой проблемы
static final long serialVersionUID = 42L;
Comments