Это плохая идея хранить SQLite Cursor в Android? - PullRequest
0 голосов
/ 26 февраля 2012

Я пытаюсь реализовать приложение для словаря на Android.Когда пользователь вводит букву в EditText (или удаляет букву), приложение запрашивает базу данных и показывает все записи, начинающиеся с текста в EditText.Поскольку база данных, которую я использую, содержит более 80000 строк, производительность запроса не так высока, как мне бы хотелось.Однако настоящая проблема возникает, когда пользователь удаляет символы из EditText.Поэтому я хочу хранить объекты Cursor в стеке.Когда пользователь удаляет символ, приложение извлекает предыдущий курсор из стека и использует его.Это плохая идея хранить объект Cursor, возвращенный из запроса SQLite?

Ответы [ 3 ]

2 голосов
/ 26 февраля 2012

База данных SQL может быть не совсем подходящим инструментом для этой цели, так как запрос, использующий «лайк», в реляционной базе данных на самом деле не работает.Вы можете повысить производительность, если денормализуете свои данные, сохраняя (и индексируя) префиксы для каждой записи.И не забудьте добавить вид оценки, чтобы расставить приоритеты для записей (скажем, если запись была выбрана, дайте ей более высокий балл)

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

Эта функция уже доступна для вас, если вы используете AutoCompleteTextView.Я предлагаю вам взглянуть на Auto Complete учебник .

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

В вашем случае я бы сказал, что хранить так много курсоров - плохая идея.Сам объект курсора содержит все результаты запроса.

...