Общие ограничения "лимит"
Я знаю, что подобный вопрос был задан много раз, и, просматривая SO, я частично нашел ответ, но не полный, и андроидные документы действительно не помогают. Очевидно, я знаю, как они работают, и много раз использовали общие настройки, но мне интересно, в какой точке (сколько) слишком много, я читал, что у людей было ~ 100KBS без каких-либо проблем. Короче --
У кого-то действительно были проблемы со слишком большим количеством данных, хранящихся в общих предпочтениях, и что было проблемой, данные удаляются или?
** Это только вопрос из любопытства, у меня уже есть мои большие значения, хранящиеся в SQL DB, просто задавались вопросом, что будет и если возникнут какие-либо проблемы, если кто-то по какой-то причине хранит все в общих предпочтениях
Ответы
Ответ 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, когда вам нужны огромные данные для хранения.