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

Общие ограничения "лимит"

Я знаю, что подобный вопрос был задан много раз, и, просматривая SO, я частично нашел ответ, но не полный, и андроидные документы действительно не помогают. Очевидно, я знаю, как они работают, и много раз использовали общие настройки, но мне интересно, в какой точке (сколько) слишком много, я читал, что у людей было ~ 100KBS без каких-либо проблем. Короче -- У кого-то действительно были проблемы со слишком большим количеством данных, хранящихся в общих предпочтениях, и что было проблемой, данные удаляются или?

** Это только вопрос из любопытства, у меня уже есть мои большие значения, хранящиеся в SQL DB, просто задавались вопросом, что будет и если возникнут какие-либо проблемы, если кто-то по какой-то причине хранит все в общих предпочтениях

4b9b3361

Ответ 1

Так как SharedPreferences хранятся в XML файле и поэтому не имеют сильной поддержки транзакций SQLite, я бы не рекомендовал хранить "100KBS" в SharedPreferences.

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

Ответ 2

От чтения вашего вопроса я бы подумал, что вы не должны использовать SharedPreferences, потому что (а) они предназначены для хранения гораздо меньших объемов данных (отсюда и использование XML), и (б) существует много простых альтернатив.

Единственная особенность SharedPreferences - это интеграция с Activity Preferences для показа ваших предпочтений пользователю, и это, вероятно, не применимо в вашем случае на основе суммы, которую вы планируете хранить. (О, также SharePreferences обрабатывает concurrency проблемы для вас.)

Вы можете использовать сериализацию Java для хранения классов предпочтений в двоичных файлах. Они были бы значительно меньше, чем сопоставимые PreferenceFile, и могут быть легко переданы через GZIPInputStream, чтобы сделать его меньшим (или CipherInputStream) для его шифрования. Я считаю, что этот альтернативный вариант является мощным, простым и кросс-платформенным способом хранения данных приложения, где не требуется сила SQLite.

(Извините, это не прямой ответ.)

Ответ 3

Существует ограничение данных SharedPreference. В моем случае он бросает исключение памяти, когда данные SharedPreference пересекают 1428.51-kb.

Таким образом, лучше использовать базу данных SQLite, когда вам нужны огромные данные для хранения.