У меня есть N файлов для загрузки. Я хочу загрузить их последовательно в фоновом режиме - один за другим. Я хочу показать прогресс и статус в ListView. Итак, ListView выглядит так:
Файл1... загружен
File2.... скачано
File3... in progress say 39%
Файл4... Ожидается
....
Listview обновляется периодически (скажем каждые 2 секунды) и файлы большие: 50 МБ или около того. Поэтому они берут 1 минуту плюс для загрузки.
Я передам список URL-адресов файлов в AsyncTask и загрузим их в фоновом режиме. Вопрос в том, как вы продвигаете прогресс в ListView.
Учтите, что пользователь может перейти от страницы ListView, оставив AsyncTask запущенной, чтобы вернуться к просмотру статуса загрузки.
Итак, как ListView "отслеживает" прогресс AsyncTask и отображает его?
Я думаю добавить набор статических переменных AsyncTask (защищая их с помощью блоков "Синхронизированный" ) и использовать периодический UI Updater внутри фрагмента, который отображает ListView. Таким образом, фрагмент будет иметь что-то вроде этого:
Повторить задачу с задержкой по времени?
Есть ли шаблон дизайна, публичный проект или образец кода для этого?
Извините, у меня нет хорошей картины. Ближе всего к тому, что я описываю здесь (похоже, но я планирую использовать AsyncTask и серийную загрузку):