предварительно создавать представления строк перед созданием списка действий? - PullRequest
0 голосов
/ 02 апреля 2011

У меня есть действие с двумя вкладками и списком в каждой. Я хочу сделать загрузку и открытие мероприятий очень быстрыми. Я обеспокоен тем, что заполнение обеих вкладок списка приведет к отставанию приложения при открытии этой активности. Я подумываю о загрузке данных из моей базы данных во время заставки моего приложения и создании массива представлений, а затем просто выбрасывать их в списки, как только эта активность будет запущена. Стоит ли это усилий? Кажется, я не могу найти простой способ сделать что-то подобное. Я предполагаю, что мне понадобятся пользовательские адаптеры массивов. У кого-нибудь есть опыт, чтобы сделать что-то подобное? Или вы просто порекомендовали бы придерживаться стандарта использования адаптера курсора в onCreate ()?

1 Ответ

0 голосов
/ 02 апреля 2011

Вопрос в том, что является причиной того, что вам нужно загружать их так быстро. В общем, элементы могут быть прочитаны из базы данных очень быстро. Тем не менее, вы должны делать это в AsyncTask , чтобы не блокировать поток пользовательского интерфейса с помощью этой операции.

Другой момент: если вы хотите отображать элементы из базы данных в ListView, вам не следует читать все элементы сразу и помещать их в массив, который вы связываете со списком. Вместо этого вы должны использовать курсор, полученный из запроса к базе данных, и привязать его к SimpleCursorAdapter или CursorAdapter , который затем привязывается к ListView. CursorAdapters оптимизированы для чтения данных из курсора по мере необходимости. Помните, что создание объектов - это дорогостоящая операция на Android, которую следует избегать, если в этом нет необходимости. Так что, если ваши списки действительно велики, и пользователь не всегда будет прокручивать весь список, тогда зачем предварительно загружать все элементы и создавать для них представления?

Конечно, вы можете запросить базу данных во время заставки и хранить возвращенные курсоры где-то до тех пор, пока они вам не понадобятся.

Но, как я сказал в начале, я не знаю, что делает ваше приложение, поэтому трудно сказать, стоит ли оно усилий или нет.

...