如何限制使用ASyncTask启动的线程数?

时间:2011-03-19 18:52:35

标签: android android-asynctask

我有一个列表视图,其中包含一些用户的Facebook好友列表,每行显示好友的姓名和图片。为了从Facebook获取图片,我在Gilles Debunne's post "Multithreading For Performance"之后使用ASyncTask启动了一个线程。

当我向下滚动列表直到结束时,启动的线程数量可能很大,这使得一切都非常慢,直到所有线程完成任务。

如何限制线程数?

由于

于连

2 个答案:

答案 0 :(得分:3)

目前,除非您愿意将自己限制在API级别11(Android 3.0)及更高级别,否则您无法限制AsyncTask使用的线程数。 IIRC,最多可使用20个线程。

如果您想要的数量少于此值,则需要创建自己的线程池机制并使用它而不是AsyncTask。或者,将代码从AsyncTask克隆到您自己的项目中,并修改其自己的线程池的特征。

答案 1 :(得分:0)

您可以使用ThreadPoolExecutor来限制用于任务的池中的线程数。