большая база данных sqlite в приложении для Android - PullRequest
0 голосов
/ 08 декабря 2010

Я пытаюсь создать приложение словаря (на самом деле это модификация образца Google SearchableDictionary), чей источник слов и их определения очень большой, около 5 МБ.Я пробовал много способов и используя много форматов, и он все еще не может работать должным образом на Android.Sqlite база данных должна быть лучшим решением, я построил ее, и ее размер составляет 10 МБ (пробовал собирать ее как до выполнения, так и во время выполнения).Основная проблема - размер определений, но я видел, что некоторым другим приложениям удалось это сделать.Может случиться так, что в систему Android встроены некоторые ограничения на размер файла, но в любом случае, если они не вернутся, для поиска и выполнения запросов в этой базе данных sqlite потребуется столько времени.

Что я делаю неправильно? Кстати: это должен быть словарь в автономном режиме (загрузка определений не более 1 раза).

Проблема в двух словах:

word -definition 
word2 -definition2...

Хранится в базе данных sqlite объемом 10 МБ (попытался загрузить ееактивы), не работает.С некоторыми взломами (загрузка вручную с помощью инструмента eclipse DDMS) это работает, но ужасно медленно.

Ответы [ 6 ]

2 голосов
/ 08 декабря 2010

Вы загружаете базу данных из папки Assets? Если да, то это ваша проблема. Существует ограничение на размер файла в папке ресурсов (я думаю, 1 МБ).

У вас есть два варианта:

  1. Разделите вашу базу данных на несколько файлов 1 МБ
  2. Создать веб-сервис. Пусть ваше приложение вызовет веб-сервис, который, в свою очередь, загрузит базу данных на ваше устройство Android. ИЛИ создайте API веб-сервиса, который будет использоваться вашим приложением для получения данных по мере необходимости.
1 голос
/ 22 августа 2011

Переименуйте его в что-нибудь вроде «databasename.mp3» или в любой другой медиаформат. Менеджер пакетов не сжимает его, поэтому вы можете использовать его так, как вам нужно.

1 голос
/ 23 марта 2011

Я достиг, сжав базу данных и разархивировав ее во внешнюю директорию кэширования (SD Card). Вы можете посмотреть пример кода здесь - http://www.android.manutech.mobi/2011/03/how-to-manage-sqlite-databases-with.html

0 голосов
/ 20 июля 2014

10M файл слишком мал для беспокойства. Это не сработало, возможно, из-за способа открытия файла базы данных. По умолчанию Android считывает файл базы данных из: //data/data/PACKAGENAME/databases/DATABASENAME.

Простым решением может быть: 1) сжать файл db до res / raw / DATABASE.zip, 2) затем разархивировать его в //data/data/PACKAGENAME/databases/.

Вы можете получить демо-код sqlite для Android здесь: http://www.cs.dartmouth.edu/~campbell/cs65/lecture15/lecture15.html

0 голосов
/ 01 февраля 2012

1) Храните сжатую версию только слов , используя GZIP.(это будет очень мало, всего около 350 тыс., и его нужно предварительно отсортировать)

2) Загрузить список в:

new ArrayList<String>();

3) Используйте двоичный поиск, чтобы найти слово

.binarySearch

4) Когда вам нужно определение, вызовите подобный API со словом

http://services.aonaware.com//DictService/DictService.asmx/Define?word=aardvark

5), проанализируйте полученный XML

0 голосов
/ 09 декабря 2010

Вы пытались сжать файл? Если данные представляют собой просто необработанный текст, я уверен, что они будут сжаты до размера менее 1 МБ.

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