2012-01-01 2 views
2

Я разрабатываю приложение «смешные кавычки» для Android. У меня более 1000 кавычек, которые я хочу использовать внутри своего приложения, но я не знаю, следует ли использовать базу данных или текстовый файл. Обратите внимание, что приложение не должно читать одно и то же предложение дважды. и у него есть предыдущая/следующая кнопка, поэтому мне нужно отслеживать предыдущие кавычки. скажите, пожалуйста, какой из них лучше и оптимизирован. Кроме того, если вы можете связать меня с хорошим руководством по хранению/чтению данных.Хороший способ хранить/читать большое количество строк?

благодаря

ответ

6

Используйте базу данных. Это быстрее и гибче, чем текстовый файл. В один прекрасный день вы расширите приложение, и тогда вы будете рады, что используете базу данных. Я рекомендую, когда вы загружаете приложение, просто выберите все строки, используя встроенные случайные функции вашей базы данных. 1000 строк не должны занимать слишком много времени. Затем просто перебирайте полученный ArrayList (или что угодно, что вы решите использовать) строк, в которые вы заканчиваете, - первая приведенная вами цитата будет элементом 0 из этого списка, вторым элементом элемента 1 из этого списка и т. Д. Если вы используете этот подход, вам не понадобится какая-либо другая структура для отслеживания использованных котировок - просто используйте переменную итератора, которую вы используете для индексирования массива котировок.

fetchAllRowsthis page похоже, что вы хотите получить данные.

Если вы решили не хранить слишком много памяти, вы можете сохранить только список кодовых идентификаторов, которые были использованы до сих пор. Последним элементом этого списка будет текущая цитата, а предыдущие элементы будут отображаться пользователем при нажатии кнопки «Назад».

+1

Я согласен с христианским, и вы можете подумать о подключении базы данных к веб-службе, чтобы вы могли обновлять строки, не требуя от пользователя загрузки новой версии приложения. Google-движок приложений - отличный сервис и свободен, если вы не превысили определенное количество вызовов для чего-то. http://code.google.com/appengine/ – MikeIsrael

+0

Письмо, которое вы хотели бы сделать только один раз. Возможно, вы можете предварительно заполнить его и отправить его с помощью своего приложения (или иметь его только для чтения через сеть)? Если нет, то рассмотрите только проверку, заполняется ли она, а затем заполняется. –

+0

Сохранение данных в памяти может оказаться не оптимальным (как я думаю, это будет мобильное приложение). Кроме того, мы не сможем поддерживать состояние легко о кавычках, которые уже были rad. Все эти минусы указывают на использование базы данных, которую вы также одобряете. – Nrj

3

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

Использование БД будет усложнять ситуацию.

Предлагаю вам прочитать плоский файл в байтах, а затем перевести их в объекты StringBuider, тем самым сохраняя его достаточно простым, но все же предотвращая интенсивный GC().

Я надеюсь, что это поможет.

1

ИСПОЛЬЗОВАНИЕ БД должно быть в порядке, поскольку я думаю, что вам не нужны все данные в памяти. Вы можете сохранить все кавычки в БД и сохранить флаг для отслеживания того, была ли прочитана цитата или нет (просто обновите ее до истинного, как только прочитайте.)

Таким образом, вы можете выбрать любую цитату с флагом как ложные.

1

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

1k записей довольно мало и, на мой взгляд, недостаточно, чтобы заслужить базу данных.

Смежные вопросы