我需要下载N个文件。我想在后台串行下载它们 -- 一个接一个的。我想在ListView中显示进度和状态。因此,ListView看起来像这样:
文件1...已下载
文件2...已下载
文件3...正在下载,进度为39%
文件4...待下载
...
ListView每隔一段时间刷新(比如2秒),这些文件很大:50MB左右。所以它们需要花费1分钟以上的时间来下载。
我将传递一个文件URL列表给AsyncTask,并在后台进行下载。问题是如何将进度反馈到ListView中。
考虑到用户可能会离开ListView页面,只留下运行的AsyncTask,等用户回来再查看下载状态。
那么,ListView如何"观察"AsyncTask的进度并显示它呢?
我想添加一组静态变量AsyncTask(用"Synchronized"块保护它们),然后在Fragment内使用定期的UI更新器来显示ListView。所以Fragment将有类似于以下内容:
是否有设计模式、公共项目或示例代码可以实现这一点?
对不起,我没有一张好的图片。最接近我所描述的是这里(类似但我计划使用AsyncTask和串行下载):