Является ли использование общих настроек Android для хранения больших объемов данных хорошей идеей? - PullRequest
12 голосов
/ 13 июня 2011

Так что я унаследовал этот проект Android от кого-то другого.Код в настоящее время, кажется, хранит огромные объемы данных (которые должны действительно принадлежать базе данных SQLite) в общих настройках.Мне очень неудобно с этой частью кода, и я хочу начать использовать базу данных sqlite.Но я все еще не могу оправдать для себя время, которое потребовалось бы, особенно если оно не принесло бы немедленных выгод.

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

Любые мысли икомментарии по хранению больших объемов данных в общих настройках будут очень благодарны.

Спасибо

Ответы [ 2 ]

9 голосов
/ 13 июня 2011

Если это работает сейчас, тогда вы определенно можете оставить его.Вы правы, что большие объемы данных должны попадать в базу данных.Если ничего другого, вам будет проще запрашивать данные.

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

0 голосов
/ 07 марта 2018

TL; DR;Не используйте общие префы для большого хранилища, вместо этого используйте БД (но если это работает сейчас, и вы спешите, сделайте это позже)

Я бы лично не рекомендовал это, так как система сохраниткопия всех общих настроек для вашего приложения в памяти.Поэтому, если вы добавите туда много данных, это повлияет на использование памяти.Тем не менее, и в зависимости от формата данных (можете ли вы использовать его как есть и использовать ключ, чтобы найти его напрямую - если вы просто сохраняете огромный объект JSON, который вам затем нужно проанализировать, или если вам нужно получить все общие префы длязатем выполните линейный поиск того, что вам действительно нужно, в обоих случаях это мало что даст), и как часто вам придется обращаться к нему, поиск может быть быстрее, чем поиск файла или базы данных, поскольку он уже находится в памяти.Это также обеспечивает преимущество поточной безопасности (SQL-БД также подходит, поскольку БД блокируются при обращении к ней), в отличие от файла, где вам придется иметь дело с этим самостоятельно.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...