Мой вопрос: как можно загрузить (только один раз, когда пользователь запускает приложение) большой список.Лучший способ эффективной загрузки больших списков
Например, приложение для SMS.
Как только приложение будет открыто, приложение выберет для всех SMS в памяти телефона и покажет их в ListView. Но как вы можете это сделать, не нарушая пользователя или не влияя на производительность?
AsyncTask ищет все разговоры в то время как пользователь все еще смотрит на вершине? Что делать, если у него более 100 000 SMS? Должен ли я ограничивать его числом и когда пользователь достигает определенной точки, загрузите остальные?
Для функции «исследования в ваших сообщениях» мне нужно, чтобы ВСЕ СМС загружалось для легкого доступа или поиска в памяти телефона для удобства хранения?
Наконец-то я всегда задавался вопросом, как знаменитые чат-приложения справились с этим, и мне действительно интересно, какие решения.
Спасибо за вашу помощь,
Ysjanati.
EDIT: Ну, это правда, что я задавал слишком много вопросов не так много, я буду пытаться исправить это.
Во-первых, я попробовал много вещей, как:
- загрузки сообщений по кусочкам, пока пользователь прокручивает по списку
- большая нагрузка в начале экземпляра
- даже сделав page- по-страничной модели с большой кнопкой «нагрузка больше»
Дело в том, что, если мы говорим о СМС, в телефоне уже есть межсетевая база данных, содержащая все необходимые мне данные. Вы не хотите забывать, что другие приложения могут манипулировать этой БД без разрешения моего приложения; это означает, что нам нужна постоянная синхронизация между родным БД телефона и моим обычным. Что вы предлагаете?
Еще раз спасибо за все ваши ответы.
Вам нужно разбить свой вопрос на управляемые части. Попробуйте подумать с точки зрения читателя, у которого, скорее всего, есть что-то лучше, чем на вопросы StackOverflow. Положите несколько вопросов, которые не имеют четкого окончательного ответа, только чтобы напомнить человеку (мне) о том, что я должен делать! Лучший способ получить ответы - показать, что вы пробовали, и где он специально поступил неправильно. –
use '[Simple] CursorAdapter' +' Loaders' framework + 'SMS ContentProvider' combo – pskink
Да, это то, что я предлагаю реализовать в своем ответе. После этого вы можете реализовать «пейджинг», например, загружать только 50-100 смс за раз и загружать больше только тогда, когда пользователь прокручивается до самого низа или приближается к нему. Использование Loader делает автоматическую перезагрузку при изменении отображаемых данных. –