Лучший способ развернуть приложение, которое поставляется с большим количеством данных - PullRequest
3 голосов
/ 25 октября 2010

Я работаю над приложением Android, которое будет содержать много данных.Я ожидал бы просто распространить базу данных SQLite, но из этого исследования становится ясно, что база данных может быть включена, но ее необходимо копировать из необработанных данных в данные, которые при наличии нескольких МБ данных будут занимать пространство без необходимости.Для моего приложения данные все текстовые / числовые / дата, и в реляционной базе данных обычно занимают четыре таблицы.Это довольно просто, но иметь две копии кажется бесполезным.

Варианты, которые я вижу:

  1. Допуск дублирующихся данных (мне больно)
  2. При установке приложение загружает данные по протоколу HTTP (у меня возникнет потенциальная проблема с загрузкой), возможно, Google App Engine.

Какие-нибудь другие решения, которые стоит рассмотреть?

Ответы [ 3 ]

2 голосов
/ 25 октября 2010

Если вы упакуете свои данные в папку res / raw, они действительно будут продублированы и, к сожалению, не могут быть удалены после того, как телефон закончил, т.е. после первого запуска.

Вы можете поэкспериментировать с меньшим размером - упаковывать данные в виде файла csv или xml или предварительно скомпилированной БД в папке res / raw и, если это приемлемо, идти в лучшую сторону. Если вы выбрали опцию csv или xml file, вы можете запустить анализатор при первом запуске и обработать данные в БД.

Что-то, что я только недавно обнаружил, но папка res / raw может обрабатывать только файлы размером около 1 МБ, это одно решение, с которым я столкнулся для упаковки большой БД и перемещения ее при первом запуске, она не выходит за рамки повторения данные в приложении:

Решение для заполнения баз данных

Вот альтернатива из блога андроида, третий, возможно, именно то, что вы ищете:

Действие загрузчика выполняется на начало вашей заявки и убедитесь, что набор файлов имеет был загружен с веб-сервера в SD-карта телефона. Загрузчик полезно для приложений, которым нужно больше локальные данные, чем можно вписать в .apk файл.

Blogspot загрузчика

Возможно, адаптируйте этот пример - загрузите файл БД с сервера, а затем переместите его в папку базы данных.

2 голосов
/ 25 октября 2010

Я сталкивался с такой же ситуацией: я пишу приложение, которое должно иметь доступ - локально - к базе данных, содержащей в основном текст и весом более 20 МБ (сжатые ZIP-файлы 7 МБ).

Лучшее решениепо моему мнению, для такого рода проблем является загрузка скомпилированной базы данных в архиве при первом запуске приложения.Преимущества этого решения:

  • APK остается легким.Это хорошо, потому что:
    • очень большие APK могут обескуражить некоторых потенциальных пользователей
    • тестирование быстрее, поскольку загрузка 7MB + APK в AVD (как я делал изначально) довольно медленная.

  • Нет дубликатов ваших данных (если вы позаботились об удалении архива ZIP после его распаковки

  • Вы не заполняете внутреннюю память телефонов своих пользователей.Действительно, ваше приложение должно загружать базу данных непосредственно на SD-карту.Включение больших файлов в папки res / raw вызовет много проблем у всех пользователей, работающих под управлением Android <2.2, поскольку они не смогут переместить приложение на SD-карту (я видел несколько негативных комментариев пользователей из-за этого на некоторыхприложения, использующие несколько мегабайт во внутренней памяти). </li>

И последнее: я не рекомендую включать CSV или XML и заполнять базу данных из нее при первом запуске.Причина в том, что это будет очень МЕДЛЕННО, и этот вид обработки не должен выполняться каждым клиентом.

1 голос
/ 25 октября 2010

Не правильный ответ, но по теме варианта 1: помните, что apk - это zip-файл, поэтому текстовый файл, содержащий одни и те же слова снова и снова, станет намного меньше.

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