我目前使用FixedThreadPool从Web下载图像,如下所示:
ExecutorService mThreadPool = Executors.newFixedThreadPool(MAX_THREADS);
然后,我只提交带有图像URL的新Runnables,它要么从URL下载图像,要么如果它存在于缓存中,则从那里加载它.
我希望能够确保一次只有一个线程可以处理特定的URL(以防止图像被下载MAX_THREADS次的情况),并且如果该线程线程完成并下载了该图像,我想允许下一个(或全部)相同的网址)运行,以从我的缓存加载以前下载的图像.
这是我在简单(希望如此)方案中显示的意思:http://i43.tinypic.com/xnz3f9.jpg
我看到了一些带有Queue任务的Runnable的自定义实现的示例,但是所有这些示例都需要在执行这些任务之前知道所有URL,我想在具有动态加载内容的ListView中使用它,这样就不可能使用该选项.
谢谢你的帮助.