我正在开发一个项目,我需要点击Web服务下载JSON数据并将在列表中显示。并且所有列表项都有缩略图URL,它们将被下载并显示在列表项中。
我用ThreadPoolExecutor和AsyncTask完成了整个调用部分。
但从设计角度来看,这是一个更好的选择:
1. ThreadPoolExecutor
2. AsyncTask
很少有人说。 ThreadPoolExecutor:
1.用户可以定义否。可以执行的并发线程
2.立即取消所有请求。
很少有人说。 of AsyncTask:
1.在内部它使用ThreadPoolExecutor,但我们不能定义否。同时运行的线程
2.取消单个请求很容易
3.附加和分离任务的能力
4.从doInBackground更新UI很简单。
我知道AsyncTask的更多优点,但是对于一个简单的应用程序,例如从Web服务获取数据以及稍后获取图像。
AsyncTask或ThreadPoolExecutor哪个更合适?如果您能提供一些有关您选择的理由,那将会很有帮助。
我在这里读过一些关于SO的文章,但没有一篇比较这两篇文章。如果有任何我错过了抱歉的问题,请你给我发链接。
提前致谢。
答案 0 :(得分:6)
如果您想使用“cascade-call”系列加载缩略图,我认为AsyncTask非常有用:在onPostExecute中,您可以启动下一个AsyncTask来下载下一个缩略图。
但是如果你想提高效率,我建议使用ThreadPoolExecutor。这是来自developer.android.com的句子:
线程池解决了两个不同的问题:它们通常提供 执行大量异步时提高性能 任务,由于减少了每个任务的调用开销,并且它们提供了一个 绑定和管理资源的方法,包括线程, 在执行任务集合时消耗。每个ThreadPoolExecutor 还保留了一些基本的统计数据,比如已完成的数量 任务。
总之,ThreadPoolExecutor可能是为你的情况设计的;因此,我建议你上课。