Общие настройки сбрасываются, когда приложение принудительно закрывается или вылетает - PullRequest
10 голосов
/ 26 января 2011

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

Я нашел эту ветку в группах Google , но они не смогли ее решить.

Кто-нибудь может понять, почему и как это происходит, и есть ли способ предотвратить это?

Кроме того, я видел это на устройствах 2.1 и 2.2. Это будет происходить при каждой аварии, а не только над некоторыми из них.

Спасибо

1 Ответ

9 голосов
/ 26 января 2011

После некоторого копания я наконец обнаружил источник проблемы.Из-за ошибки в моем коде предпочтение строки сохранялось с нулевым ключом.Таким образом, после сбоя при загрузке настроек была пустая строка в файле настроек XML, которая привела к сбоям настроек и их сбросу.По какой-то причине я не получил трассировку стека аварийного сбоя, а только непосредственную причину первоначального сбоя.

Просто для добавления дополнительных подробностей на случай, если у кого-то еще возникнет подобная проблема в будущем:

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

...