Подтвердить что ты не робот

SharedPreferences иногда удаляются

Мое приложение использует SharedPreferences (с помощью PreferenceActivity) для хранения всех настроек. Но иногда все настройки удаляются, и все значения возвращаются к умолчанию. В основном на вкладках Android 3.x. На обычных смартфонах проблем нет.

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

В моем приложении также есть служба, основной процесс и служба, как параметры чтения, так и записи, в SharedPreferences. Я иногда замечал, что все настройки очищаются после того, как служба записывает в SharedPreferences. Но это не происходит каждый раз.

Любые идеи? Я понимаю, что SharedPreferences не должны использоваться различными процессами, но он работает на всех смартфонах без проблем!

4b9b3361

Ответ 1

Я выяснил причину исчезновения настроек: Если два процесса записывают данные в SharedPreferences, может случиться так, что все SharedPreferences будут reset к значениям по умолчанию. В моем случае все настройки очищаются, когда служба записывает первые данные в SharedPreferences.

Теперь служба предоставляет только доступ для чтения к SharedPreferences. Параметры, которые выполняются при записи обоих процессов, хранятся в базе данных.

Ответ 2

У меня была такая же проблема. Все значения из общих настроек становятся стандартными, если одно значение иногда записывается с помощью key = null. Это возможно при создании новых констант с использованием Eclipse, которые по умолчанию имеют значение null, а затем вы забыли перейти к началу класса и изменить константу на какое-то значимое значение. Если вы продолжите использовать приложение, функция чтения общих настроек вернет действительные значения. Но когда изменяется контекст (например, когда активность, убитая андроидом и воссозданная), все значения из общих настроек возвращают значения по умолчанию (нули).

Итак, проверьте свои общие настройки! Надеюсь, этот ответ поможет кому-то.

Ответ 3

SharedPreferences обычно отлично работают и, как вы уже упоминали, без проблем на смартфонах. Он также должен работать на планшетах. Однако было бы лучше использовать sqlite или поддерживать ваши общие привилегии на сервере, поскольку потеря данных данных каждого пользователя является проблемой.