【问题标题】:AsyncTask v/s ThreadPoolExecutor for network request用于网络请求的 AsyncTask v/s ThreadPoolExecutor
【发布时间】:2011-10-10 18:59:24
【问题描述】:

我正在做一个项目,我需要点击 Web 服务下载 JSON 数据,并将在列表中表示。并且所有列表项都有缩略图 url,可以下载并显示在列表项中。

我已经使用 ThreadPoolExecutor 和 AsyncTask 完成了整个调用部分。

但从设计的角度来看,这是一个更好的选择:
1. 线程池执行器
2. 异步任务

很少有广告。 ThreadPoolExecutor:
1.用户可以定义编号。可以执行的并发线程数。
2. 一次性取消所有请求。

很少有广告。异步任务:
1.在内部它使用一个ThreadPoolExecutor,但是我们不能定义no。同时运行的线程数。
2. 取消单个请求很容易。
3. 能够附加和分离任务。
4. 从 doInBackground 更新 UI 很简单。

我知道 AsyncTask 的更多优点,但是对于简单的应用程序,例如从 Web 服务获取数据以及稍后获取图像。

AsyncTask 和 ThreadPoolExecutor 哪个更合适?如果您能就您的选择提供一些理由,那将很有帮助。

我在这里阅读了几篇关于 SO 的文章,但没有一篇文章可以将两者进行比较。如果有任何我错过的麻烦,请您将链接发给我。

提前致谢。

【问题讨论】:

    标签: android web-services android-asynctask


    【解决方案1】:

    如果您想使用一系列“级联调用”加载缩略图,我认为 AsyncTask 很有用:在 onPostExecute 中,您可以启动下一个 AsyncTask 以下载下一个缩略图。

    但是如果你想提高效率,我建议使用ThreadPoolExecutor。这是developer.android.com的一句话:

    线程池解决了两个不同的问题:它们通常提供 执行大量异步时提高性能 任务,由于减少了每个任务的调用开销,并且它们提供了 限制和管理资源的方法,包括线程, 执行任务集合时消耗。每个 ThreadPoolExecutor 还维护了一些基本的统计信息,比如完成的数量 任务。

    总之,ThreadPoolExecutor 可能是为您的情况而设计的;出于这个原因,我向你推荐这门课。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    相关资源
    最近更新 更多