Загрузка новых данных в списки Android - как это должно быть (от 1,5 до 4,1)

1

Сегодня я думал о том, как работает каркас Android, и я не уверен в одном: как разработчик (я) должен программировать списки для отображения пользовательских данных из нескольких источников. Я создал несколько приложений, но для меня важно, чтобы мои приложения были чистыми и быстрыми, насколько это возможно.

Итак - у меня есть приложение, например, программа для чтения новостей. Im, используя фрагменты, списки, специальные макеты для элементов списка и BaseAdapter для отображения данных во многих списках и действиях. Здесь ничего нового и ничего особенного. Сначала я загружаю все данные с веб-сервера в sqlite в приложении, поэтому я уверен в скорости и стабильности. И что дальше?

Должен ли я создавать элементы списка из списков Java (элементы списка), а затем передавать их в baseadapter, или я должен использовать только метод SQLite Cursor-> списка? Что лучше обновлять список, добавлять новые элементы и удалять их? Помните, что у меня есть ListFragment с базовым адаптером в отдельном классе.

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

ТЛ; др

Как создать список для целей скорости, когда я использую несколько источников для отображения данных?

Теги:

1 ответ

1
Лучший ответ

Я не уверен, понимаю ли я ваш полный вопрос, но о том, какой источник данных использовать для адаптера, вот мои мысли:

Я думаю, это зависит от объема данных, с которыми вы имеете дело. Если он достаточно мал, вы можете хранить все в списке в памяти, но вы также должны быть уверены, что данные со временем не будут расти.

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

Поэтому, если вы имеете дело с большим количеством данных или данных, которые потенциально растут с течением времени (например, сообщения, созданные пользователем), вам необходимо иметь адаптер, который внутренне работает с окном данных, которое загружает фиксированное количество элементов в память при время. Это окно всегда хранит кучу элементов в памяти, которые можно просмотреть и быстро просмотреть с помощью ListView (путем прокрутки вверх и вниз).

Скажем, это окно содержит, например, 200 элементов. Когда верхняя/нижняя граница этого окна будет достигнута, адаптеру необходимо загрузить следующее соседнее окно. Вы можете наблюдать такое поведение в приложении GMail ("Загрузка разговоров...").

Я бы позволил этим данным сидеть в курсоре и не перенести их в список сначала, потому что вы можете использовать курсор, как список.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню