Android: асинхронный запуск метода в отдельном потоке - PullRequest
1 голос
/ 12 октября 2011

У меня есть метод, который обновляет представление списка, переустанавливая адаптер представления списка.Адаптер загружает уменьшенное изображение для каждого элемента списка, когда он установлен.

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

Каковы альтернативные способы сделать это?

Заранее спасибо.

Ответы [ 5 ]

4 голосов
/ 12 октября 2011

Вы можете использовать AsyncTask (http://developer.android.com/reference/android/os/AsyncTask.html) или Loader (http://developer.android.com/guide/topics/fundamentals/loaders.html).). Я рекомендую использовать загрузчик, так как он кажется всегда более простым. Оба были (среди прочего) предназначены именно для этого типапроблемы.

Чтобы использовать загрузчик на любой целевой платформе менее 3,0, см. http://developer.android.com/sdk/compatibility-library.html.

2 голосов
/ 12 октября 2011

Вот весь код.

/495838/lenivaya-zagruzka-izobrazhenii-v-listview#495840

1 голос
/ 12 октября 2011

AsyncTask также работает для координации фоновых заданий с обновлениями элементов пользовательского интерфейса:

http://developer.android.com/reference/android/os/AsyncTask.html

0 голосов
/ 12 октября 2011

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

0 голосов
/ 12 октября 2011

Хм.Если я правильно понял, вы не хотите использовать новый адаптер до окончания загрузки изображений?Где в адаптере находится ваш код загрузки изображения.В зависимости от этого вы можете получить код загрузки только после загрузки / отображения представлений адаптера.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...