Лучший способ хранить динамические данные? - PullRequest
0 голосов
/ 03 июля 2018

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

Я хочу, чтобы люди могли создавать разные категории для своих приложений (например, «Медиа», «Утилиты», «Социальные сети»). Пользователи должны иметь возможность выбирать порядок своих приложений, и приложения могут отображаться в нескольких категориях. Пользователи могут обновить порядок приложений и порядок должен сохраняться при перезапуске. Я также хотел бы отслеживать частоту запуска приложений, чтобы иметь автоматическую категорию «наиболее часто используемых».

У меня было 2 подхода, но ни один из них не кажется идеальным:

  1. Сохраните список приложений в файл (JSON или другой), отметив имя пакета и его положение в списке. При необходимости внесите этот файл и отсортируйте по порядку

  2. Сохраните список в базе данных SQLlite, либо:

    • Есть таблица для каждой категории. Столбцы будут иметь имя_пакета и список_позиция
    • Иметь одну таблицу со столбцом для каждой категории, в которой хранится позиция этого приложения в этой категории (или ноль, если ее нет). При создании новой категории добавляется новый столбец (не поддерживается в комнате).

Вариант 1 Мне кажется, было бы сложно сохранить динамичность и быть неуверенным в эффективности, поэтому я предпочитаю вариант 2, потому что его просто обновлять и автоматически упорядочивать, но для этого может быть излишним использование БД для этого.

Любой совет или другие возможные решения были бы великолепны! Спасибо

Ответы [ 2 ]

0 голосов
/ 12 июля 2018

Если ваша функция ограничена, тогда работает файловый подход, ваш подход зависит от того, какие функции вы хотите иметь, например

-> добавить т. Е. (Добавить) определенный индекс, или вам необходимо прибегнуть к перестановке или перетасовке данных.

-> использование данных, т. Е. При упорядоченном доступе к данным или фильтрации по нескольким функциям.

Хранение данных в файле обычно предпочтительнее для небольшого набора значений ключей, таких как сам Android Sharedpref. В зависимости от функциональности, имеющейся у вашей программы запуска, файловая система становится сложной и более медленной, что приводит к более медленному доступу и модификации, и в этом случае она (файл) не будет лучшим способом для хранения списка приложений (и другой информации, если необходимо) в файле.

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

0 голосов
/ 03 июля 2018

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

Если вы хотите избежать стандартного кода SQLite, рассмотрите Комната . В качестве альтернативы вы можете взглянуть на Realm , которая является альтернативой SQLite.

...