как использовать отложенную загрузку или асинхронную задачу в представлении списка - PullRequest
2 голосов
/ 09 августа 2011

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

1 Ответ

3 голосов
/ 09 августа 2011

Поэтому я обычно не даю совета, если нет четкой попытки / кода для показа, но я помню, когда я впервые столкнулся с AsyncTasks и многопоточностью в целом, и как это сначала немного сбивало с толку, поэтому Я начну с правильного пути.

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

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

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

Надеюсь, это дало вам какое-то направление.

...