Внезапно, каждый раз, когда я запускаю свое приложение, мои пользовательские настройки очищаются. Вместо использования предпочтений непосредственно в Activity, у меня есть вспомогательный класс в моем объекте Application, который обращается к таким предпочтениям:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
Это сработало отлично, пока только сейчас. У меня есть собственный класс приложений, который управляет большей частью содержимого приложения, чтобы избежать проблем с повторным созданием этого контента при создании/уничтожении активности.
Я понимаю, что есть способ очистить пользовательские настройки, но у меня этого нет в моем коде. Это, похоже, начиналось, когда я начал создавать Proguard для релизов, но теперь это происходит и с отладочными сборками. Повторная загрузка нового приложения из Eclipse или даже просто повторное запуск приложения приводит к тому, что настройки будут удалены.
Я просматриваю последние изменения кода и не нашел ничего связанного. Поскольку я приближаюсь к публикации приложения на рынке, я продолжаю переключаться между отладкой и выпуском, но я бы не подумал, что это вызовет такую проблему.
Любые идеи?
Кевин
Решил. С Logcat я, наконец, заметил исключение при чтении предпочтений. Я писал новое предпочтение с нулевым ключом, и это вызывало исключение загрузки предпочтений. Неверная ошибка с моей стороны.
Процитировать вас...
Это, похоже, начиналось, когда Я начал строить с Proguard для релиз сборки
Поскольку в версиях сборки и отладочных сборках используются разные ключи для подписи, они не могут сосуществовать на одном устройстве. Вы уверены, что не удаляете сборку отладки при установке сборки релиза? Uninstalls будет использовать любые предпочтения, привязанные к приложению.
Поскольку вы говорите, что у вас нет кода, который бы удалял настройки, единственный способ, которым я знаю, чтобы уклониться от предпочтения, - это удалить XML файл физических предпочтений или удалить его. Таким образом, вы можете проверить, чтобы убедиться, что у вас нет кода, который очищает файлы в локальной области хранения вашего приложения.