Извините, что, вероятно, задал вопрос, но не смог найти ответ, несмотря на изучение многочисленных уроков и других вопросов здесь.Тяжелый запрос ContentProvider и ListView
То, что я хочу сделать, довольно просто: отображает Android ListView с большим количеством сохраненных в базе данных строк. И «много» я имею в виду до 100 МБ, но ListView должен начать показывать вещи без задержки.
Контекст: это приложение для управления заметками, и по умолчанию оно должно отображать все незаписанные примечания пользователя. Я изучаю, как приложение будет вести себя, если будет много заметок.
Теперь я использую рекомендуемый подход с каркасом Loader: начиная с запроса ContentProvider в onCreateLoader и назначая полученный курсор адаптеру ListView в onLoadFinished.
Все еще это мучительно медленно (начальная нагрузка до 10 с). Я изучил источники Cursor и знаю, что он хранит «окно» данных, так что не все 100 Мб текста должны быть загружены сразу. Однако, похоже, это так.
Я думал, что это довольно распространенная задача, и я удивлен, не найдя никакой хорошей информации об этом. Это критическая часть приложения, и я хочу получить ее с самого начала - ее будет сложно реорганизовать позже.
Так может ли кто-нибудь помочь в этом? Является ли ленивая загрузка ответа? Почему Cursor не делает это сам? Как это сделать правильно - нужно ли сначала кэшировать массив идентификаторов и загружать куски при прокрутке?
Спасибо!
, что адаптер вы используете и как? – pskink
Я использую простой класс CursorAdapter, который в своем методе bindView получает данные из Курсора и назначает его представлениям из ViewHolder (созданным ранее в newView). –
Вы можете попробовать, загрузив данные в куски. – Beena