我正在开发一个项目,我需要点击 Web 服务下载 JSON 数据并将其表示在列表中。所有列表项都有缩略图 URL,可以下载并显示在列表项中。
我已经使用 ThreadPoolExecutor 和 AsyncTask 完成了整个调用部分。
但从设计的角度来看,这是一个更好的选择:
1. 线程池执行器
2. 异步任务
很少的副词。 ThreadPoolExecutor的:
1. 用户可以定义编号。可以执行的并发线程数。
2. 一次性取消所有请求。
很少的副词。异步任务的:
1.它内部使用ThreadPoolExecutor,但是我们不能定义no。同时运行的线程数。
2. 取消单个请求很容易。
3. 能够附加和分离任务。
4. 从 doInBackground 更新 UI 很简单。
我知道 AsyncTask 的更多优点,但是对于简单的应用程序来说,例如从 Web 服务获取数据,然后再获取图像。
AsyncTask 或 ThreadPoolExecutor 哪个更合适?如果您能提供一些有关您选择的理由,那将会很有帮助。
我在这里读过一些关于 SO 的文章,但没有一篇文章对两者进行比较。如果我错过了任何内容,抱歉给您带来麻烦,请给我发布相同内容的链接。
提前致谢。
我认为如果您想使用一系列“级联调用”加载缩略图,AsyncTask 很有用:在 onPostExecute 中,您可以启动下一个 AsyncTask 来下载下一个缩略图。
但如果你想提高效率,我建议使用ThreadPoolExecutor。这是一句来自开发者.android.com http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.html:
线程池解决两个不同的问题:通常提供
提高性能当执行大量异步操作时
任务,由于减少了每个任务的调用开销,并且他们提供了
限制和管理资源的方法,包括线程,
执行任务集合时消耗。每个ThreadPoolExecutor
还维护一些基本统计数据,例如完成的数量
任务。
总之,ThreadPoolExecutor 可能是为像您这样的情况而设计的;因此,我向您推荐这门课。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)